假设我有一个名为ForcDF的数据框,具有以下观察结果:
rk_parzen lag_otcd lag_otcw lag_otcm lag_rk_parzend lag_rk_parzenw lag_rk_parzenm
0.1526254 0.272405508 0.334758 -0.1578856 0.33086609 0.45841442 1.05087961
0.32810743 -0.5532207 0.3033109 -0.08269962 0.1526254 0.46578762 1.05311702
0.09988565 0.553947079 0.1277503 0.06266097 0.32810743 0.45310285 0.80120331
0.80273637 -0.19515946 0.348732 0.1109986 0.09988565 0.43996977 0.76912554
0.47181709 0.392927814 0.01949308 0.152771 0.80273637 0.22787114 0.80103164
0.31639981 1.292184025 0.04962366 0.06195646 0.47181709 0.34583871 0.70587798
0.09988565 -0.10416503 0.5109749 -0.07778483 NA NA NA
0.48331801 -0.93381443 0.3464468 0.06444518 NA NA NA
实际上,这是大约15年的数据的基本布局。 lag_rk_parzen(d / w / m)分别表示1个滞后时段,2-5个滞后时段和6-22个滞后时段的平均值。
我想对其他变量线性回归rk_parzen。这可以通过lm()轻松完成。但是,假设我想要一个包含5个观察值的移动窗口,并使用前5个观察值训练模型。然后,我想预测第6个rk_parzen,并使用预测来计算滞后值,然后移动窗口并根据实际rk_parzen值重新训练模型。
我尝试执行此操作的效率极低且不正确,因此我再次尝试使用以下方法:
pred = function(x) tail(fitted(lm(ForcDF[,"rk_parzen"] ~., as.data.frame(ForcDF))), 1)
newdf = transform(ForcDF, pred = rollapplyr(ForcDF, 5, pred, by.column = FALSE, fill = NA))
这似乎只是提取样本中的最终拟合值,而不是使用模型系数和数据预测下一个值,这不是我想要的。
如果有人使用过rugarch软件包,则除了线性回归外,其他都类似于ugarchroll。
基本上,仅使用模型系数使用滞后变量预测rk_parzen,然后使用预测的rk_parzen从样本中构建滞后变量。样本窗口中将是前5个观测值。
感谢您的帮助!