2016-05-13 5 views
0

Я разрабатываю модель временных рядов векторной авторегрессии (VAR) в R. Спецификация модели включает в себя матрицу (xts класс) эндогенных переменных под названием «endog» и матрицу (также класс xts) экзогенных переменных, называемых «exog» «. Данные являются сезонными, и я хочу прогнозировать сезонность, поэтому я также указываю «сезон = 12», поскольку данные являются ежемесячными. Таким образом, мой код R для выполнения модели var:R var предсказывает, как список экзогенных переменных, так и список фиктивных переменных, что, если моя спецификация не включает фиктивные переменные?

fit <- var(endog, p = 1, season = 12, type = 'const', exogen = exog) 

Этот код работает гладко. Но теперь я хочу предсказать данные за 24 периода. Так мой предсказать код:

predictions <- predict(fit, exo.fcst = exog_future, n.ahead = 24, ci = 0.95) 

где «exog_future» является матрица (также xts класс) из одних и тех же переменных, как в exog, но включает в себя 24 будущих периодов, чтобы прогнозировать. (Я пробовал два варианта:. Один с исторической exog данных плюс новые данные в течение следующих 24 периодов, а другая версия включает в себя только в 24 периодов)

Я получаю следующее сообщение об ошибке:

Ошибка в predict.varest (ВАР (endog, р = 1, сезон = 12, тип = "Const",:. Нет матрица для dumvar поставляется, но объект varest содержит экзогенные переменные

Ясно, что R ожидает матрица фиктивных переменных в дополнение к экзогенным переменным. Если R не учитывает спецификацию «сезон = 12» как ma трикс фиктивных переменных, спецификация модели не содержит фиктивных переменных, поэтому почему она ожидает фиктивные переменные сейчас? В случае, если он учитывает сезонные спецификации как фиктивные переменные, я добавил «сезон = 12» в свой код прогноза. Я получил такое же сообщение об ошибке.

Я понимаю, что если модель включает в себя экзогенные переменные, то я должен указать будущие значения для них в коде прогнозирования. Я также понимаю, что если бы я предоставил фиктивные переменные, для этого прогнозирования понадобятся будущие значения этих значений по одной и той же причине. Они являются экзогенными переменными, только двоичными.

Итак, если в спецификации модели не указаны фиктивные переменные, что я ожидаю от поставки для «dumvar?»?

+0

Возможно, я понял, но решение нелогично. Возможно, кто-то может проверить правильность решения. – Joe

+0

Возможно, я понял, но решение нелогично. Возможно, кто-то может проверить правильность решения.Когда я представляю матрицу будущих экзогенных переменных как _dumbvar = matrix_of_future_exogenous_variables_, ошибка исчезает. Логично представить эти переменные, потому что предсказание нуждается в их значениях для расчета прогнозируемых значений эндогенных переменных. Нет смысла называть их _dumbvar_, потому что они не являются двоичными. Они являются непрерывными переменными, такими как _unemployment_rate_. Обратите внимание: матрица находится в формате xts, так как это временные ряды. – Joe

+0

Извините за дублирование. Я попытался немедленно отредактировать, но система не допустила бы этого, потому что я потратил более 5 минут на то, чтобы завершить редактирование. Возможно, это ограничение может быть удалено на сайте, что поощряет продуманные решения. – Joe

ответ

0

Действительно, если у вас есть экзогенное значение в вашей подготовке, вы должны включать в себя будущие экзогенных значения exog_future в качестве параметра для dumvar в функции predict(), в вашем случае вы должны установить dumvar=exog_future так что

predictions <- predict(fit, dumvar = exog_future, n.ahead = 24, ci = 0.95)

в R документации http://127.0.0.1:26594/library/vars/html/predict.html это говорит о том, что основные аргументы функции predict() являются object, n.ahead, ci и dumvar, поэтому для того, чтобы избежать путаницы, может быть, вы должны игнорировать аргумент exo.fcst. Это сбивает с толку, потому что кажется, что exo.fcst является правильным параметром для exog_future, но на практике вы должны всегда использовать dumvar для этого, а не exo.fcst.

Смежные вопросы