Вычисление автокорреляций
Автокорреляции, или корреляции со сдвигом, используются для оценки того, зависит ли временной ряд от своих прошлых значений. Для временного ряда 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