Прогнозирование с помощью пакета `midasr`: включение нового высокочастотного значения
Я пытаюсь рассчитать прогноз на один шаг вперед, используя так называемую концепцию MIDAS. В рамках этой концепции вычисляются прогнозы в зависимости от данных более высокой частоты. Например, зависимая переменная y
может быть записан ежегодно и объяснен с помощью независимой переменной x
, который может быть выбран, например, ежеквартально.
Есть пакет под названием midasr
который предлагает много функций. Я могу рассчитать прогноз на один шаг вперед, используя функцию select_and_forecast
из упомянутого пакета следующим образом (с имитацией данных, которая является упрощенной версией примера из руководства пользователя к пакету midasr
):
Генерация данных:
library(midasr)
set.seed(1001)
n <- 250
trend <- c(1:n)
x <- rnorm(4 * n)
z <- rnorm(12 * n)
fn.x <- nealmon(p = c(1, -0.5), d = 8)
y <- 2 + 0.1 * trend + mls(x, 0:7, 4) %*% fn.x + rnorm(n)
Расчет прогнозов (горизонт прогноза вне выборки контролируется аргументом outsample
так что в моем примере я рассчитываю 10 прогнозов, от 240 до 250)
select_and_forecast(y~trend+mls(y,1,1,"*")+mls(x,0,4),
from=list(x=c(4)),
to=list(x=rbind(c(14,19))),
insample=1:250,outsample=240:250,
weights=list(x=c("nealmon","almonp")),
wstart=list(nealmon=rep(1,3),almonp=rep(1,3)),
IC="AIC",
seltype="restricted",
ftype="recursive",
measures=c("MSE"),
fweights=c("EW","BICW")
)$forecasts[[1]]$forecast
Теперь я хотел бы смоделировать ситуацию, когда становится доступным новое значение высокочастотной переменной, потому что, например, прошел новый месяц, и значение для этого месяца можно использовать в модели. Я бы поступил следующим образом, но я очень не уверен, правильно ли это:
select_and_forecast(y~trend+mls(y,1,1,"*")+mls(x,0,4),
from=list(x=c(3)), # The only change is the reduction of the lower bound of the range of the lags of the regeressor from 4 to 3
to=list(x=rbind(c(14,19))),
insample=1:250,outsample=240:250,
weights=list(x=c("nealmon","almonp")),
wstart=list(nealmon=rep(1,3),almonp=rep(1,3)),
IC="AIC",
seltype="restricted",
ftype="recursive",
measures=c("MSE"),
fweights=c("EW","BICW")
)$forecasts[[1]]$forecast
Теоретически одно включает новые наблюдения высокочастотной переменной посредством уменьшения временного индекса, но я не знаю, правильно ли использовать эту функцию таким образом.
Этот вопрос для тех, кто знаком с пакетом. Может кто-нибудь дать комментарий к этому?
Формула, на которой я думаю:
y_t=\beta_0 + \beta_1B(L^{1/m};\theta)x_{t-h+1/m}^{(m)} + \epsilon_t^{(m)}
С h=1
в моем случае и добавление 1/m
включить новое высокочастотное наблюдение
1 ответ
Я не уверен, что правильно понял ваш вопрос, поэтому приведу пример, который, я надеюсь, ответит на ваш вопрос.
Предположим, ваша переменная ответа y
наблюдается с ежегодной частотой и переменной предиктор x
наблюдается ежеквартально (что соответствует моделируемым данным). Скажите, что вы заинтересованы в прогнозировании на следующий год y
значение с использованием данных за предыдущий год. Тогда модельное уравнение в pacakge midasr выглядит следующим образом:
y~mls(x,4:7,4)
Ценности 4:7
лаги x
используется для прогнозирования и 4
указывает на то, что есть 4 наблюдения x
за каждое наблюдение y
,
Пакет midasr использует соглашение, что для периода низкой частоты t=l
мы наблюдаем периоды высокой частоты m*(l-1)+1:m
, Так за год 1
у нас есть кварталы 1,2,3,4
, на год 2
у нас есть кварталы 5,6,7,8
, Это соглашение предполагает, что мы соблюдаем y
в год 1
вместе с 4
четверть x
, y
в год 2
вместе с кварталом 8
из x
и так далее.
Модель MIDAS сформулирована с точки зрения лагов, которые начинаются с нуля. Так что, если мы хотим объяснить y
в год 1
(как в нашем примере низкая частота является годовой частотой) со значениями x
с того же года, то есть кварталы 4,3,2,1
мы используем лаги 0,1,2,3
, Если наша цель состоит в том, чтобы объяснить y
в год 2
со значениями x
в год 1
мы используем лаги 4,5,6,7
которые соответствуют кварталам 4,3,2,1
,
Теперь предположим, что мы находимся в год 3
, но мы еще не наблюдали y
значение, но мы уже наблюдали первый квартал года 3
квартал 9
, Предположим, мы хотим использовать эту информацию для прогнозирования. четверть 9
три года отстают от года 3
следовательно, спецификация модели сейчас
y~mls(x,3:7,4)
где мы также включаем всю информацию о предыдущем году тоже.
Так что, если мой пример соответствует тому, что вы спрашиваете, то да, включение нового высокочастотного наблюдения - это только вопрос изменения значения from
аргумент, как вы сделали. Однако я настоятельно рекомендую начать с одной простой модели, чтобы полностью понять, как работает пакет.