使用R更新ARIMA预测

时间:2014-07-14 14:32:58

标签: r updating

我想知道如何在R上更新ARIMA预测。我想预测月度时间序列,提前期等于1个月。例如,如果我最后一次观察是在2月份,我想要预测3月,4月和5月。在第一步之后,March的值变为可用,我想将此新数据与之前的输入数据一起用于预测4月和5月。在第二步,我想使用我的原始输入数据和3月和4月的估计值来预测5月。等我的原始输入数据等于600个月,我想预测300个月。 拜托,你能帮助我吗?

ts.month <- ts(month, start=c(1970,10), frequency=12)
tsf.month <- diff(ts.month)
tss.month <- diff(tsf.month)


T <- length (tss.month)     # observed data from 1970 to 2000
index <- 1:(T-1)
res <- forecast(arima(tss.month[index], c(12, 0, 1)), h=1,
                level=c(80,95), fan=FALSE, xreg=NULL,  
                bootstrap=FALSE, npaths=5000)
ts.res <- ts(res$mean, start=c(1991,10), frequency=12)

我在第一个月和第二个月尝试了以下方法,但当然我不能使用它300个月,结果是错误的可能是cbind的原因。

T <- length (tss.month)
index <- 1:(T-1)
res1 <- forecast(arima(tss.month[index], c(12, 0, 1)), h=1,
            level=c(80,95), fan=FALSE, xreg=NULL,  
            bootstrap=FALSE, npaths=5000)

ts.res <- ts(res1$mean, start=c(1991,10), frequency=12)
ttt <- ts.intersect(tss.month, ts.res)
ts.tt <- ts(ttt, start=c(1960,12), frequency=12)


T <- length (ts.tt)
index <- 1:(T-1)
res2 <- forecast(arima(ts.tt [index], c(12, 0, 1)), h=1,
             level=c(80,95), fan=FALSE, xreg=NULL,  
             bootstrap=FALSE, npaths=5000)
ts.res2 <- ts(res2$mean, start=c(1991,11), frequency=12)
ttt2 <- rbind(tss.month, ts.res2)
ts.tt2 <- ts(ttt2, start=c(1960,12), frequency=12)

1 个答案:

答案 0 :(得分:0)

您可以通过rbind附加值并重新运行ARIMA并进行预测。我的例子:

tail(data)
             total      dates
2015-06-02 37071.08 2015-06-02
2015-06-03 36722.21 2015-06-03
2015-06-04 28785.25 2015-06-04
2015-06-05 24800.79 2015-06-05
2015-06-06 13361.47 2015-06-06
2015-06-07 14050.93 2015-06-07
fit<-auto.arima(data$total,ic=c("aicc","aic", "bic"),allowdrift=TRUE)
forecast(fit,h=1)
Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
1883 28960.05 25876.42 32043.69 24244.04 33676.07

要在收到新的ACTUAL数据点时添加,您可以:

toAdd<-data.frame(total=34455.21,dates="")
new.data<-rbind(data,toAdd)

这个数据集具有很强的季节性(ARIMA(3,1,3)。

fit<-auto.arima(new.data$total,ic=c("aicc","aic", "bic"),allowdrift=TRUE)
forecast(fit,h=1)
Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
1884       28684.03 25597.14 31770.92 23963.04 33405.02