我已经构建了一个非零均值的ARIMA(9,0,2)模型。我想用这个模型来创建反事实预测。也就是说,条件是只有前九个观察点,我正在寻找一个R函数,它可以使用ARIMA(<,>第十一个等)进行预测。 0,2)我使用所有数据估算的模型。
据我所知,R函数forecast
和predict
没有完成反事实部分。函数forecast
选择你的时间序列结束并使用拟合模型进行预测,但是我没有找到一种方法来欺骗它使用观察1-9来预测观察10以后,或使用观察2-10预测观察11向前。同样,predict
会创建接下来的几个观察数据,从而获取数据停止的位置。我还没有找到这些功能的解决方法。
R函数fitted
只为可用数据中的每个时间点创建一步预测,而不是长期预测。
我已经粘贴了用于创建虚假时间序列数据的代码,Arima对象以及forecast
如何为我的问题提供有用输出的演示。
setseed(2314)
fake.data <- rnorm(10,sd=5)
for(i in 1:200){
model.length <- 9
lower <- length(fake.data)-9+1
upper <- length(fake.data)
new.obs <- rnorm(1,mean=0,sd=0.25)+fake.data[lower:upper]%*%c( -0.1, 0.1, -0.15,0.15,-0.2,0.2,-0.5,0.3,0.9)
fake.data <- c(fake.data, new.obs)
}
plot(fake.data)
fitted.arima <- auto.arima(fake.data, ic="bic")
plot(forecast(fitted.arima))
显然forecast
的输出不是在观察到的时间点的预测。
答案 0 :(得分:2)
您可以使用fixed
参数修复参数。下面是一个例子:
m<-arima(LakeHuron,order=c(9,0,2))
coe<-m$coef
mn<-arima(LakeHuron[1:9],order=c(9,0,2),fixed=coe)
sum(coe==mn$coef)
12 # all coefficients are equal
predict(mn,n.ahead =10)