НачатьНачать бесплатно

Вычисление автокорреляций

Автокорреляции, или корреляции со сдвигом, используются для оценки того, зависит ли временной ряд от своих прошлых значений. Для временного ряда x длины n рассматривают n-1 пар наблюдений, отстоящих друг от друга на один шаг по времени. Первая такая пара — (x[2],x[1]), следующая — (x[3],x[2]). В общем виде каждая пара записывается как (x[t],x[t-1]), где индекс t меняется от 2 до n. Автокорреляция ряда x с лагом 1 оценивается как выборочная корреляция этих пар (x[t], x[t-1]).

Пары наблюдений можно сформировать вручную. Для этого создайте два вектора, x_t0 и x_t1, каждый длины n-1, так чтобы строки соответствовали парам (x[t], x[t-1]). Затем примените функцию cor() для оценки автокорреляции с лагом 1.

К счастью, команда acf() позволяет сделать это автоматически. Вызов acf(..., lag.max = 1, plot = FALSE) для ряда x сразу вычисляет автокорреляцию с лагом 1.

Обратите внимание, что два способа дают слегка отличающиеся результаты — из-за различий в масштабировании при вычислении выборочной ковариации: 1/(n-1) и 1/n. Хотя второй вариант даёт смещённую оценку, в анализе временных рядов предпочитают именно его. При этом полученные оценки автокорреляции отличаются лишь на множитель (n-1)/n.

В этом упражнении вы попрактикуетесь в вычислении автокорреляции с лагом 1 двумя способами — вручную и автоматически. Временной ряд x и его длина n (150) уже загружены. Ряд отображён на графике справа.

Это упражнение является частью курса

Анализ временных рядов в R

Посмотреть курс

Инструкции к упражнению

  • Создайте два вектора, x_t0 и x_t1, каждый длины n-1, так чтобы строки соответствовали парам (x[t], x[t-1]).
  • С помощью заранее написанного кода убедитесь, что x_t0 и x_t1 действительно образуют пары (x[t], x[t-1]).
  • Используйте plot(), чтобы построить диаграмму рассеяния для x_t0 и x_t1.
  • Используйте cor(), чтобы вычислить корреляцию между x_t0 и x_t1.
  • Используйте acf() с аргументом x, чтобы автоматически вычислить автокорреляцию с лагом 1. Задайте аргументу lag.max значение 1 для получения одного лагового периода, а аргументу plot — значение FALSE.
  • С помощью заранее написанного кода убедитесь, что коэффициент различия равен (n-1)/n.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Define x_t0 as x[-1]
x_t0 <- 

# Define x_t1 as x[-n]
x_t1 <- 

# Confirm that x_t0 and x_t1 are (x[t], x[t-1]) pairs  
head(cbind(x_t0, x_t1))
  
# Plot x_t0 and x_t1
plot(___, ___)

# View the correlation between x_t0 and x_t1
cor(___, ___)

# Use acf with x
acf(___, lag.max = ___, plot = ___)

# Confirm that difference factor is (n-1)/n
cor(x_t1, x_t0) * (n-1)/n
Редактировать и запускать код