MIDAS模型|使用midasr包处理混频数据
在构建预测模型时,一些数据的发布频率可能不一致,例如GDP是每季度发布一次,而工业增加值是每月才发布一次,对于此种情况,可将月度数据进行加总,转换成季度数据后再使用传统的时序模型进行预测建模。此种方法较为简单直接,但其也有不足,即无法充分准确的挖掘高频数据丰富信息。为解决此问题,众多学者提出了不同的混频数据处理模型,常见的有Mixed Frequency Data Sampling Regression Models(MIDAS)模型、Dynamic Factor Model(DFM)模型。这里我们着重探讨一下MIDAS模型的使用。
MIDAS模型形式
MIDAS模型最早由Ghysels提出,其灵感源于分布滞后模型。MIDAS模型最初主要应用于金融领域,当前在宏观经济预测中得到广泛应用,一般形式的 MIDAS模型[1]如下所示

其中
第一部分为低频滞后项,以季度GDP预测为例,往期GDP包含丰富信息,因而被包含到模型当中,第二部分为高频项,
为高频变量个数,
代表低频变量与高频变量的对应数目,例如要预测季度变量,而自变量为月度变量,一个季度变量由3个月度变量转换而来,那么对应的
就是3。
与直接加总不同,MIDAS模型在进行月度到季度的转换时,给每个高频项赋予了一个权重
,由
确定。各高频项系数之间满足一定的限制关系时, MIDAS被称为restricted MIDAS regression;反之,则被称为unrestricted MIDAS regression,后者可直接使用ols进行估计。对MIDAS高频项系数施加约束时,
函数形式有两种:Beta分布多项式、指数 Almon多项式函数。
基于MIDAS模型的实证分析
我们使用MIDAS包自带的数据集来进行实证模型构建,此数据集包含美国月度失业率美国及美国年度GDP,可构建使用美国月度失业率预测年度GDP的模型。
data("USrealgdp")
data("USunempr")
y.ar <- diff(log(USrealgdp))
xx <- window(diff(USunempr), start = 1949)
trend <- 1:length(y.ar)
##Fit AR(1) model
mr_ar <- midas_r(y.ar ~ trend + mls(y.ar, 1, 1) +
fmls(xx, 11, 12, nealmon),
start = list(xx = rep(0, 3)))
mr_ar
此例子构建了一个Restricted-MIDAS-AR(1)模型,这里面我们需要着重看一下midas_r函数的使用。
midas_r函数第一个参数让传入一个公式对象,指定 MIDAS模型的因变量及自变量。MIDAS模型在进行估计时,需要使用优化算法迭代求解,这就要指定一个起始迭代点,第二个start参数即是指定该起始迭代点。
mls和fmls参数解读
注意到,公式对象使用到了mls和fmls这两个函数,这两个函数参数完全一样,第一个参数指定数据,第二个参数指定滞后阶数,第三个参数指定高低频变量之间的转换数,我们可以参照下图理解这三个参数

把失业率纳入模型当中需要调用3次mls函数,mls(x, 0, 3)、mls(x, 1, 3)及mls(x, 2, 3),可使用fmls函数一次完成fmls(x, 2, 3)
结果解读
上述代码的输出结果为

MIDAS模型当中我们使用了nealmon约束函数,这里面xx对应的3个值分别就对应nealmon的参数,nealmon函数数学表达式为

第一个参数xx1即对应
,第二个xx2对应一次项的
,第三个xx3对应一次项的
如果想把约束函数的多项式最高次数改成5次,只需在start参数更改为start = list(xx = rep(0, 6))即可。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)