R var Predict требует как списка экзогенных переменных, так и списка фиктивных переменных, что, если моя спецификация не включает фиктивные переменные?

Я разрабатываю модель временных рядов векторной авторегрессии (VAR) в R. Спецификация модели включает матрицу (класс xts) эндогенных переменных, называемых «эндог», и матрицу (также класс xts) экзогенных переменных, называемых «экзог». Данные являются сезонными, и я хочу прогнозировать сезонность, поэтому я также указываю «сезон = 12», поскольку данные ежемесячные. Итак, мой код 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 периода.)

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

Ошибка в предсказании.varest(VAR(endog, p = 1, Season = 12, type = "const", : Матрица для думвара не предоставлена, но объект varest содержит экзогенные переменные.

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

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

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


person Joe    schedule 13.05.2016    source источник
comment
Я, возможно, понял это, но решение нелогично. Возможно, кто-то сможет проверить правильность решения.   -  person Joe    schedule 15.05.2016
comment
Я, возможно, понял это, но решение нелогично. Возможно, кто-то сможет проверить правильность решения. Когда я представляю матрицу будущих экзогенных переменных как dumbvar = matrix_of_future_exogenous_variables, ошибка исчезает. Представлять эти переменные имеет логичный смысл, поскольку прогнозу нужны их значения для расчета прогнозируемых значений эндогенных переменных. Нет смысла называть их dumbvar, потому что они не двоичные. Это непрерывные переменные, такие как unemployment_rate . Обратите внимание, матрица в формате xts, так как это временной ряд.   -  person Joe    schedule 15.05.2016
comment
Извините за дублирование. Я попытался отредактировать сразу, но система не разрешила этого, потому что мне потребовалось более 5 минут, чтобы завершить редактирование. Возможно, это ограничение можно было бы снять на сайте, поощряющем продуманные решения.   -  person Joe    schedule 15.05.2016
comment
Что ты имеешь в виду I submit the matrix of future exogenous variables as dumbvar = matrix_of_future_exogenous_variables. У меня есть аналогичная проблема: stackoverflow.com/questions/51764339/, возможно, вы можете мне помочь   -  person quant    schedule 09.08.2018


Ответы (1)


Действительно, когда у вас есть экзогенное значение в вашем обучении, вы должны включить будущие экзогенные значения 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.

person antonioACR1    schedule 03.08.2017