Предположим, я рассматриваю несколько независимых переменных для возможного включения в разрабатываемую модель ARIMAX. Прежде чем подгонять различные переменные, я бы хотел отобрать переменные, которые проявляют обратную причинность, с помощью теста Грейнджера (я использую granger.test
функцию из MSBVAR
пакета в R, хотя, я полагаю, другие имплиментации работают аналогично). Как определить, сколько лагов нужно проверить?
Функция R: granger.test(y, p)
где y
фрейм данных или матрица, и p
это лаги.
Нулевая гипотеза состоит в том, что последние значение не помогает при прогнозировании величины .
Есть ли причина не выбирать здесь очень большое отставание (кроме потери наблюдений)?
Обратите внимание, что я уже различал каждый временной ряд в моем фрейме данных, основываясь на порядке интеграции моих зависимых временных рядов. (Например, дифференцирование моего зависимого временного ряда однажды сделало его стационарным. Следовательно, я также один раз дифференцировал все «независимые» временные ряды.)
источник
Ответы:
Компромисс между смещением и властью. Слишком мало лагов, у вас есть предвзятый тест из-за остаточной автокорреляции. Слишком много, вы позволяете для потенциально ложных отказов в нуле - некоторая случайная корреляция может заставить это выглядеть как помогает предсказать . Независимо от того, является ли это практической проблемой, зависит от ваших данных, я бы предпочел наклониться выше, но длину лага всегда можно определить следующим образом:X Y
Причинность Грейнджера всегда должна быть проверена в контексте некоторой модели. В конкретном случае
granger.test
функции в R модель имеет p прошлых значений каждой из двух переменных в двумерном тесте. Таким образом, модель, которую он использует:Обычный способ выбрать для этой модели - попробовать эту регрессию с различными значениями и использовать отслеживание AIC или BIC для каждой длины лага. Затем снова запустите тест, используя значение которое имеет самую низкую IC в ваших регрессиях.p p p
В общем, число лагов в модели может быть разным для и и тест Грейнджера все еще будет уместным. Именно в конкретном случае реализации вы ограничены одинаковым количеством лагов для обоих. Это вопрос удобства, а не теоретическая необходимость. С разной длиной лага для двух переменных вы все равно можете использовать AIC или BIC для выбора вашей модели, вам просто нужно сравнить множество комбинаций лагов и лагов . Смотрите это .x y n x m y
granger.test
Просто лишнее слово - поскольку тест Грейнджера зависит от модели, смещение пропущенных переменных может стать проблемой для причинности Грейнджера. Возможно, вы захотите включить все переменные в вашу модель, а затем использовать причинность Грейнджера, чтобы исключить их блоки вместо использования
granger.test
функции, которая выполняет только парные тесты.источник