ПочатиПочніть безкоштовно

Обчислення автокореляцій

Автокореляції або зсунуті кореляції використовують, щоб оцінити, чи залежить часоряд від свого минулого. Для часоряду 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
Редагувати та запускати код