specGT<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T, external.regressors = TGT))
TGT是外部回归量。它是一个包含1列和1359行的矩阵(与我的数据集的行数相同)。此代码有效(至少它没有给出任何错误)。 现在我想使用arfimaroll来预测波动性。这是代码
forecastarfimaGT<-arfimaroll(specGT,lagRV_d,n.ahead=1,n.start=1014,refit.every=1,refit.window="recursive",solver="hybrid")
这也没有错误。但是,如果我将模型的预测与外部回归量与来自相同ARFIMA模型的预测进行比较,而没有外部回归量,它会给出相同的值
forecastarfimaGT==forecastarfimarealized
345个预测点的每一个输出都为TRUE。
有关预测的一些说明。 refit.window =&#34;递归&#34;用于执行扩展窗口预测,其他参数无关紧要(如refit.every等)。
现在我的问题是我在这里做错了什么。有人可以给我一个关于我错误的提示吗?
问候
编辑: 为了使它更清楚,这是一个虚构的例子。首先让我们用数据制作一个时间序列
a<-abs(rnorm(600,0.1,0.1)
然后制作外部回归量的矢量并将其转换为矩阵
b<-abs(rnorm(600,1,1))
b1<-as.matrix(b,nrow=600,ncol=1)
现在没有外部回归的arfima预测
spec<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T))
forecastarfima<-arfimaroll(spec,a,n.ahead=1,n.start=500,refit.every=1,refit.window="recursive",solver="hybrid"
forecastarfimadf<-as.data.frame(forecastarfima)
forecastarfimarealized<-forecastarfimadf[,-c(1:5)]
与exernal回归量的预测
specGT<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T, external.regressors = b1))
forecastarfimaGT<-arfimaroll(specGT,a,n.ahead=1,n.start=500,refit.every=1,refit.window="recursive",solver="hybrid"
forecastarfimaGTdf<-as.data.frame(forecastarfimaGT)
forecastarfimarealizedGT<-forecastarfimaGTdf[,-c(1:5)]
现在让我们比较两个结果
forecastarfimarealized==forecastarfimarealizedGT
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[37] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[73] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
正如您所见,展位矢量相同。不一定是这样的。即使外部回归量没有影响,矢量也不应完全相同。我现在非常困惑。我使用正确的方法吗?你能解决我的问题吗?
答案 0 :(得分:0)
那是因为你正在寻找原始系列:
cbind(forecastarfimarealized,forecastarfimarealizedGT,a[501:600])
看看&#34; Mu
&#34;。请尝试改为:
cbind(forecastarfimadf[,c(6,1)],forecastarfimaGTdf[,1])
plot.ts(cbind(forecastarfimadf[,c(6,1)],forecastarfimaGTdf[,1]),plot.type="single",col=2:4,ylab="x")
legend("top",c("realized","forecast x","forecast x+GT"),lty=1,col=2:4,bty ="n")
您确定要对波动率进行建模吗?也许你必须看看&#34; Sigma
&#34;为了那个原因。为什么不使用Garch和家人?