我有24个时间序列预测,我想要累积的总和。这里只有两个,因为它们产生了我遇到的错误:
forecast(arima(P1, c(0,0,0)), h = 6)$mean
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2012 12.81818
2013 12.81818 12.81818 12.81818 12.81818 12.81818
从2012年12月到2013年5月。
forecast(arima(P2, c(0,0,0)), h = 6)$mean
Jan Feb Mar Apr May Jun
2014 12.94118 12.94118 12.94118 12.94118 12.94118 12.94118
从2014年1月至2014年6月。
我尝试使用全0的虚拟时间序列来添加它们以保存中间结果,但是当我将第一个添加到虚拟时间序列时,它会在结束时被截断(对于P1,即2013年5月) ,然后尝试添加第二个只返回时间序列不相交的错误消息。
有没有办法做到这一点?我想像这样的时间序列是我的结果:
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2011 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
2012 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 12.94118
2013 12.81818 12.81818 12.81818 12.81818 12.81818 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
2014 12.94118 12.94118 12.94118 12.94118 12.94118 12.94118
要添加的部分时间序列有重叠,有些则没有。
我知道R有用于分层时间序列预测的hts包,但我需要使用arima(0,0,0)模型进行预测以用于说明目的......
干杯!
答案 0 :(得分:0)
好的,这是答案。可能有更好的方法,但这有效:
#create dummy time series ts0
ts0 <- ts(rep(0,42), start = c(2011, 1), frequency = 12)
#merge alle forecasts with ts0 using ts.union
ts.union(ts0, forecast(arima(P1, c(0,0,0)), h = 6)$mean, forecast(arima(P2, c(0,0,0)), h = 6)$mean, ..., forecast(arima(P24, c(0,0,0)), h = 6)$mean)
#get row sums using rowSums
ts0sums <- rowSums(ts0)
#make into time series again
ts1 <- ts(ts0sums, start = c(2011, 1), frequency = 12)
#change 0's to NAs for plotting with "holes"
ts1[ts1 == 0] <- NA
#ts1
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2011 NA NA NA NA NA NA NA NA NA NA NA 9.000000
2012 9.000000 9.000000 9.000000 9.000000 9.000000 NA NA NA 13.428571 13.428571 13.428571 76.774109
2013 78.631252 78.631252 65.202681 65.202681 65.202681 1.857143 NA NA NA NA NA 18.411765
2014 430.440131 430.440131 430.440131 430.440131 430.440131 412.028367