目前,我正在尝试使用采用外部回归量 x 的 ARIMA-APARCH 模型进行预测。这是使用 rugarch 包完成的。模型设置如下:
spec=ugarchspec(variance.model=list(model="apARCH",
garchOrder=as.numeric(c(1,1)),
external.regressors=as.matrix(External[1000:1999])
),
mean.model=list(armaOrder=as.numeric(c(1,1))))
aparch=ugarchfit(spec=spec,data=Price[1001:2000],out.sample=500,setbounds=list("vxreg1" = c(-2,2)))
forecast=ugarchforecast(aparch,n.ahead=1,n.roll=499,external.forecasts=list(External[1000:1999]))
该代码旨在按如下方式工作:给定从 t=1001 到 t=1501 期间的价格数据以及外部回归变量的滞后值(因此这些将从 t=1000 开始并结束在 t=1999 时),我们希望对 t=1502 期间到 t=2000 期间进行滚动预测,因此我们将有 499 个预测。
这里的关键是在时间 t 只有外部回归量的滞后值是已知的,因此模型应该只能访问时间 t-1 的“外部”值。例如,要预测时间 t=1700 的价格,模型应使用时间 t=1699 的“外部”值。
在阅读了类似的问题后,我在 vxreg1 上包含了改进的边界,并且模型也无需使用 setstart(spec) 即可收敛。但是,代码似乎不起作用,并且预测部分似乎无法识别外部回归量。
有人可以指出这里出了什么问题以及我如何使我的想法可行吗?包含更多数据完全没有问题,因为数据在 t=2000 之后以及从 t=0 开始一直可用。