Как прогнозировать использование данных с неровными краями в модели MIDAS с использованием пакета MIDASR?

Я пытаюсь сгенерировать квартальный прогноз на 1 шаг вперед, используя месячную переменную с midasr пакет. Проблема в том, что я могу только оценить MIDAS модель, когда количество ежемесячных наблюдений в выборке ровно в 3 раза больше количества квартальных наблюдений.

Мой вопрос, как я могу прогнозировать в midasr пакет, если число ежемесячных наблюдений не является точным кратным квартальным наблюдениям (например, когда у меня есть новая точка ежемесячных данных, которую я хочу использовать для обновления прогноза)?

В качестве примера, предположим, что я запускаю следующий код, чтобы сгенерировать прогноз на 1 шаг вперед, когда у меня есть (n) квартальные наблюдения и (3*n) ежемесячные наблюдения:

#first I create the quarterly and monthly variables
n <- 20
qrt <- rnorm(n)
mth <- rnorm(3*n)

#I convert the data to time series format
qrt <- ts(qrt, start = c(2009, 1), frequency = 4)
mth <- ts(mth, start = c(2009, 1), frequency = 12)

#now I estimate the midas model and generate a 1-step ahead forecast 
library(midasr)
reg <- midas_r(qrt ~ mls(qrt, 1, 1) + mls(mth, 3:6, m = 3, nealmon), start = list(mth = c(1, 1, -1)))
forecast(reg, newdata = list(qrt = c(NA), mth =c(NA, NA, NA)))

Этот код работает нормально. Теперь предположим, что у меня есть новая месячная точка данных, которую я хочу включить, так что новые месячные данные:

nmth <- rnorm(3*n +1)

Я попытался запустить следующий код, чтобы оценить новую модель:

reg <- midas_r(qrt ~ mls(qrt, 1, 1) + mls(nmth, 2:7, m = 3, nealmon), start = list(mth = c(1, 1, -1))) #I now use 2 lags instead 3 with the new monthly data

Однако я получаю сообщение об ошибке: 'Error in mls(nmth, 2:7, m = 3, nealmon) : Incomplete high frequency data'

Я не мог найти в Интернете ничего о том, как справиться с этой проблемой. Любая помощь с благодарностью.

1 ответ

Решение

Некоторое время назад я имел дело с подобным вопросом. Если я правильно помню, сначала нужно оценить модель, используя старый набор данных с уменьшенной задержкой, поэтому необходимо использовать 3:6 лаги вы должны использовать 2:6 запаздывает:

reg <- midas_r(qrt ~ mls(qrt, 1, 1) + mls(mth, 2:6, m = 3, nealmon), start = list(mth = c(1, 1, -1)))

Затем предположим, что вы наблюдаете новое значение данных более высокой частоты - new_value

new_value <- rnorm(1)

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

forecast(reg, newdata = list(mth = c(new_value, rep(NA, 2))))
Другие вопросы по тегам