在R中拟合'arima()`模型后进行预测和绘图

在R中拟合'arima()`模型后进行预测和绘图,r,time-series,R,Time Series,只是熟悉时间序列,并以此为指导:徒劳地预测股票市场的未来回报。。。只是一个理解时间序列概念的练习 问题是,当我绘制预测值时,我得到了一条与历史数据不一致的常数线。这是蓝色的,位于道琼斯历史收益率的尾端 事实上,我想要一个更“乐观”的视觉效果,或者一个“重新趋势化”的情节,比如我预测的航空旅客人数: 代码如下: library(quantmod) library(tseries) library(forecast) getSymbols("^DJI") d = DJI$DJI.Adjusted

只是熟悉时间序列,并以此为指导:徒劳地预测股票市场的未来回报。。。只是一个理解时间序列概念的练习

问题是,当我绘制预测值时,我得到了一条与历史数据不一致的常数线。这是蓝色的,位于道琼斯历史收益率的尾端

事实上,我想要一个更“乐观”的视觉效果,或者一个“重新趋势化”的情节,比如我预测的航空旅客人数:

代码如下:

library(quantmod)
library(tseries)
library(forecast)
getSymbols("^DJI")
d = DJI$DJI.Adjusted
chartSeries(DJI)
adf.test(d) 
dow = 100 * diff(log(d))[-1]
adf.test(dow)
train = dow[1 : (0.9 * length(dow))]
test  = dow[(0.9 * length(dow) + 1):  length(dow)]
fit = arima(train, order = c(2, 0, 2))
predi = predict(fit, n.ahead = (length(dow) - (0.9*length(dow))))$pred
fore  = forecast(fit, h = 500)
plot(fore)
不幸的是,如果我尝试将相同的代码用于空中旅行者预测,就会出现错误。例如:

fit = arima(log(AirPassengers), c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
pred <- predict(fit, n.ahead = 10*12)
ts.plot(AirPassengers,exp(pred$pred), log = "y", lty = c(1,3))

正在取得一些进展,但OP的时间太长了

  • 从根本不工作到稍微工作:或者为什么我会收到“非时间序列长度不正确”和其他神秘的错误消息。。。嗯,在不知道细节的情况下,我突然想到要检查我想要的
    cbind.ts
    is.ts(d)[1]FALSE
    Aha!即使
    d
    xts
    对象,它也不是时间序列。因此,我必须以.ts(d)的形式运行
    。解决了
    
  • 不切实际的持平市场预测:现在将其绘制为

    fit2=arima(log(d),c(2,1,2));pred=predict(fit2,n.ahead=365*5)
    ts.plot(如.ts(d),exp(pred$pred),log=“y”,col=c(4,2),lty=c(1,3),
    main=“VIX=0市场条件”,ylim=c(600020000))

  • 好的。。。在这个前景平平的高盛,没有工作前景。我需要吸引一些投资者。让我们再煮一些蛇油:

  • 让平局继续下去:让我们把“季节性”加起来,我们准备好像1999年一样狂欢:

    fit3=arima(log(d),c(2,1,2),季节性=list(order=c(0,1,1),period=12))

    pred=predict(fit3,n.ahead=365*5)
    ts.plot(如.ts(d),exp(pred$pred),log=“y”,col=c(2,4),lty=c(1,3),
    main=“投资者招股说明书-马多夫股份有限公司”)

  • 就快到了:我去佩奇打印了一份官方财务顾问证书,所以我准备好拿你的退休金了。为了做到这一点,我只需要在未来五年的乐观前景中表达一些健康的不确定性。放松点,小豌豆<代码>预测=预测(fit2,h=365*5);绘图(前)
  • ,瞧
  • 哦,不!我不可能得到任何毒品来投资这个现实检查。。。幸好我没有辞去白天的工作。。。等一下,我输入模型时出错了:
    fore=forecast(fit3,h=365*5)plot(fore)

    我要去史泰博

    fit2 = arima(log(d), c(2, 0, 2))
    pred = predict(fit2, n.ahead = 500)
    ts.plot(d,exp(pred$pred), log = "y", lty = c(1,3))
    Error in .cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = TRUE) : non-time series not of the correct length