Обчислення автокореляцій
Автокореляції або зсунуті кореляції використовують, щоб оцінити, чи залежить часоряд від свого минулого. Для часоряду x довжини n розглядаємо n-1 пар спостережень, розділених однією одиницею часу. Перша така пара — (x[2],x[1]), наступна — (x[3],x[2]). Кожна пара має вигляд (x[t],x[t-1]), де t — індекс спостереження, який у цьому разі змінюємо від 2 до n. Автокореляцію лагу 1 для x можна оцінити як вибіркову кореляцію пар (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