Как выполнить тест причинности Грейнджера в 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 \*\*
---
Signif. 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, мы не можем отвергнуть нулевую гипотезу. То есть количество цыплят не является предсказанием будущего количества яиц.

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.