Як виконати тест причинності грейнджера в r


Тест причинності Грейнджера використовується для визначення того, чи корисний один часовий ряд для прогнозування іншого.

Цей тест використовує такі нульові та альтернативні гіпотези:

Нульова гіпотеза (H 0 ): часовий ряд x не викликає часовий ряд y до Грейнджера

Альтернативна гіпотеза ( HA ): часовий ряд x часовий ряд Ґрейнджера викликає y

Термін «причини Грейнджера» означає, що знання значення часового ряду x з певним лагом є корисним для прогнозування значення часового ряду y на пізніший період.

Цей тест створює статистику F-критерію з відповідним значенням p. Якщо p-значення нижче певного рівня значущості (тобто α = 0,05), тоді ми можемо відхилити нульову гіпотезу та зробити висновок, що у нас є достатньо доказів, щоб стверджувати, що часовий ряд x Грейнджер викликає часовий ряд y.

Щоб виконати перевірку причинності Грейнджера в R, ми можемо використати функцію grangertest() із пакета lmtest , яка використовує такий синтаксис:

grangertest(x, y, порядок = 1)

золото:

  • x: перший часовий ряд
  • y: другий часовий ряд
  • порядок: кількість зсувів для використання в першому часовому ряду. Значення за умовчанням — 1.

Наступний покроковий приклад показує, як використовувати цю функцію на практиці.

Крок 1: Визначте два часові ряди

Для цього прикладу ми використаємо набір даних ChickEgg , попередньо завантажений у пакет lmtest. Цей набір даних містить значення кількості виготовлених яєць, а також кількості курей у Сполучених Штатах з 1930 по 1983 рік:

 #load lmtest package
library (lmtest)

#load ChickEgg dataset
data(ChickEgg)

#view first six rows of dataset
head(ChickEgg)

     chicken egg
[1,] 468491 3581
[2,] 449743 3532
[3,] 436815 3327
[4,] 444523 3255
[5,] 433937 3156
[6,] 389958 3081

Крок 2: Виконайте тест причинності Грейнджера

Далі ми скористаємося функцією grangertest() , щоб виконати тест причинності Грейнджера, щоб побачити, чи кількість виготовлених яєць є прогнозом майбутньої кількості курей. Ми проведемо тест із трьома зміщеннями:

 #perform Granger-Causality test
grangertest(chicken ~ egg, order = 3 , data = ChickEgg)

Granger causality test

Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3)
Model 2: chicken ~ Lags(chicken, 1:3)
  Res.Df Df F Pr(>F)   
1 44                     
2 47 -3 5.405 0.002966 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Ось як інтерпретувати результат:

  • Модель 1: Ця модель намагається передбачити кількість курей, використовуючи кількість курей за попередні три роки та кількість яєць за попередні три роки як змінні прогнозу.
  • Модель 2: Ця модель намагається передбачити кількість курчат, використовуючи лише кількість курчат за попередні три роки як змінні-прогнози.
  • F: Це статистика тесту F. Виходить 5,405.
  • Pr(>F): це p-значення, яке відповідає статистиці F-тесту. Виходить 0,002966.

Оскільки p-значення менше 0,05, ми можемо відхилити нульову гіпотезу тесту та зробити висновок, що знати кількість яєць корисно для прогнозування майбутньої кількості курей.

Крок 3: Виконайте перевірку причинності Грейнджера у зворотному порядку

Незважаючи на те, що ми відкинули нульову гіпотезу тесту, насправді цілком можливо, що може статися випадок зворотної причинності. Іншими словами, можливо, що кількість курей викликає зміну кількості яєць.

Щоб виключити таку можливість, нам потрібно виконати тест Грейнджера-причинності у зворотному порядку, використовуючи курей як змінну прогностику та яйця як змінну відповіді :

 #perform Granger-Causality test in reverse
grangertest(egg ~ chicken, order = 3 , data = ChickEgg)

Granger causality test

Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3)
Model 2: egg ~ Lags(egg, 1:3)
  Res.Df Df F Pr(>F)
1 44                 
2 47 -3 0.5916 0.6238

P-значення тесту становить 0,6238. Оскільки це не менше 0,05, ми не можемо відхилити нульову гіпотезу. Іншими словами, кількість курей не передбачає майбутньої кількості яєць.

Таким чином, можна зробити висновок, що знати кількість яєць корисно для прогнозування майбутньої кількості курей.

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *