我正在使用rugarch包来估计和预测我的时间序列。首先,我估计一个 ARMA 模型:
y <- readRDS("y.rds")
y.test <- readRDS("y-test.rds")
m1.mean.model <- auto.arima(y, allowmean=F )
ar.comp <- arimaorder(m1.mean.model)[1]
ma.comp <- arimaorder(m1.mean.model)[3]
但通常误差项显示 GARCH 过程的典型特征。随后,我拟合了一个 ARMA-GARCH(1,1) 过程,并对测试数据进行了一步预测:
library(rugarch)
model.garch = ugarchspec(mean.model=list(armaOrder=c(ar.comp,ma.comp)),
variance.model=list(garchOrder=c(1,1)),
distribution.model = "std")
model.garch.fit = ugarchfit(data=c(y,y.test), spec=model.garch, out.sample = length(y.test), solver = 'hybrid' )
modelfor=ugarchforecast(model.garch.fit, data = NULL, n.ahead = 1, n.roll
= length(y.test), out.sample = length(y.test))
results1 <- modelfor@forecast$seriesFor[1,] + modelfor@forecast$sigmaFor[1,]
results2 <- modelfor@forecast$seriesFor[1,] - modelfor@forecast$sigmaFor[1,]
ylim <- c(min(y.test), max(y.test))
plot.ts(y.test , col="blue", ylim=ylim)
par(new=TRUE)
modelfor@forecast$seriesFor[1,] %>% plot.ts(ylim=ylim)
par(new=TRUE)
plot.ts(results1, col="red", ylim=ylim)
par(new=TRUE)
plot.ts(results2, col="red", ylim=ylim)
这就是我感到困惑的地方。查看均值 ( modelfor@forecast$seriesFor, black) 的预测,它们几乎从零开始移动。但是,如果我添加sigma它,它会非常接近。事实上,sigma(第二张图)的预测表明它正在捕捉变化的方差。我的问题是,鉴于我们知道方差预测进入了均值预测方程(例如本书的第 204 页),为什么我的预测如此糟糕?
数据:y-test.rds , y.rds

