我正在尝试使用所谓的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
以包含新的高频观察
答案 0 :(得分:3)
我不确定我是否理解你的问题所以我会举一个例子,希望能回答你的问题。
假设您的响应变量y
以年度频率观察,并且每季度观察预测变量x
(对应于模拟数据)。假设您有兴趣使用上一年的数据预测明年y
值。然后,pacakge midasr 中的模型方程如下:
y~mls(x,4:7,4)
值4:7
是用于预测的x
滞后,而4
表示x
的每次观察都有y
的4次观察。
包 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
y
等1
MIDAS模型是根据滞后来制定的,从零开始。因此,如果我们想在x
年解释4,3,2,1
(在我们的示例中,低频率是年度频率),同一年的值0,1,2,3
,即季度{{1}我们使用滞后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
之后的三个高频滞后,因此模型规范现在是
{{1}}
我们也包括上一年的所有信息。
因此,如果我的例子对应于你所要求的,那么是的,包含新的高频观察只是改变{{1}}参数值的问题。但是我强烈建议从一个简单的模型开始,以完全掌握包的工作方式。