从auto.arima中提取预测值的分布

时间:2016-05-11 00:47:59

标签: time-series

来自预测包的预测(模型),它返回点预测以及上下预测间隔。有没有办法提取每个预测值的确切分布,以便我可以为每一行预测制作直方图?间隔不足以使直方图如下所示。

> forecast(mod,12)
   Point Forecast        Lo 80        Hi 80        Lo 95        Hi 95
12    0.000284821 0.0002356356 0.0003340064 2.095985e-04 0.0003600435
13    0.000284821 0.0002237453 0.0003458967 1.914137e-04 0.0003782283
14    0.000284821 0.0002138190 0.0003558230 1.762328e-04 0.0003934092
15    0.000284821 0.0002051195 0.0003645225 1.629281e-04 0.0004067140
16    0.000284821 0.0001972803 0.0003723617 1.509390e-04 0.0004187030
17    0.000284821 0.0001900876 0.0003795544 1.399388e-04 0.0004297033
18    0.000284821 0.0001834037 0.0003862383 1.297167e-04 0.0004399253
19    0.000284821 0.0001771339 0.0003925081 1.201278e-04 0.0004495142
20    0.000284821 0.0001712096 0.0003984324 1.110674e-04 0.0004585746
21    0.000284821 0.0001655793 0.0004040627 1.024565e-04 0.0004671855
22    0.000284821 0.0001602030 0.0004094390 9.423428e-05 0.0004754077
23    0.000284821 0.0001550494 0.0004145927 8.635240e-05 0.0004832896

1 个答案:

答案 0 :(得分:1)

如果残差是正态分布的,则所有ARIMA模型的分布都是正常的。因此,您可以轻松地从点预测和上/下限获得所有未来时间段的均值和方差。

如果您不愿意假设残差是正常的,您可以按如下方式模拟未来的分布。

library(forecast)
nsim <- 1000
mod <- auto.arima(WWWusage)
sim <- matrix(NA, nrow=9, ncol=nsim)
for(i in 1:nsim)
  sim[,i] <- simulate(mod, nsim=9, future=TRUE, bootstrap=TRUE)
par(mfrow=c(3,3))
for(i in 1:9)
  hist(sim[i,], breaks="FD", main=paste("h=",i))

enter image description here