R语言使用lm/dylm对异频变量回归的变量长度差异问题咨询
不同频率变量回归问题解决方案
报错原因说明
普通lm()和dynlm函数本身不支持不等长观测的回归计算,二者底层默认要求因变量和自变量的样本数量一一对应,你给出的示例中因变量长度为10、自变量长度为40,样本数不匹配,所以会触发长度差异报错,属于正常的函数逻辑限制。
无聚合/拆分的实现方法
不需要手动处理数据频率、也不需要手动计算线性回归的前提下,你可以使用**混频数据抽样回归(MIDAS, Mixed Data Sampling)**实现需求,该方法专门为不同频率时间序列的回归场景设计,直接支持不等长的高低频变量建模。
R语言中可以通过midasr包实现MIDAS回归,对应你的模拟数据的示例代码如下:
# 加载混频回归工具包 install.packages("midasr") library(midasr) # 你的原始模拟数据 yt1 = rnorm(10, mean =10, sd = 1) # 低频变量,共10个观测 xt1 = rnorm(40, mean = 1,sd = 1) # 高频变量,共40个观测,频率是低频的4倍 # 构建混频回归模型,指定高低频频率比为4,使用当期及滞后3期的高频数据 midas_model <- midas_r(yt1 ~ mls(xt1, 0:3, 4), start = list(xt1 = c(1,1))) # 输出回归结果 summary(midas_model)
代码中mls()是混频变量专用处理函数,第二个参数0:3表示调用当期及滞后3期的高频观测,第三个参数4对应高低频变量的频率比值,你可以根据实际的季度/月度频率比(3)修改该参数即可适配真实业务场景。
内容的提问来源于stack exchange,提问作者Wietze
相关产品推荐
相关产品推荐

