当我开始使用ARIMA模型进行预测时,我试图了解如何根据ARIMA随季节和漂移的变化来改进预测。
我的数据是以下时间序列(超过3年,趋势清晰且季节性明显,似乎在滞后12、24、36?时自相关不支持)。
> bal2sum3years.ts
Jan Feb Mar Apr May Jun Jul Aug
2010 2540346 2139440 2218652 2176167 2287778 1861061 2000102 2560729
2011 3119573 2704986 2594432 2362869 2509506 2434504 2680088 2689888
2012 3619060 3204588 2800260 2973428 2737696 2744716 3043868 2867416
Sep Oct Nov Dec
2010 2232261 2394644 2468479 2816287
2011 2480940 2699780 2760268 3206372
2012 2951516 3119176 3032960 3738256
所建议的模型auto.arima(bal2sum3years.ts)
为我提供了以下模型:
Series: bal2sum3years.ts
ARIMA(0,0,0)(0,1,0)[12] with drift
Coefficients:
drift
31725.567
s.e. 2651.693
sigma^2 estimated as 2.43e+10: log likelihood=-321.02
AIC=646.04 AICc=646.61 BIC=648.39
但是,acf(bal2sum3years.ts,max.lag=35)
并未显示acf系数高于0.3。但是,数据的季节性非常明显-每年年初都会激增。这是该系列在图中的样子:
fit=Arima(bal2sum3years.ts,seasonal=list(order=c(0,1,0),period=12),include.drift=TRUE)
通过函数调用的预测会forecast(fit)
导致接下来12个月的均值等于数据的最后12个月加上常数。可以通过调用来看到plot(forecast(fit))
,
我还检查了残差,这些残差不是自相关的,但具有正平均值(非零)。
我认为拟合度无法精确地模拟原始时间序列(蓝色为原始时间序列,红色为fitted(fit)
:
客串是,模型不正确吗?我想念什么吗?如何改善模型?该模型似乎从字面上看需要过去12个月,并增加了一个常数以实现接下来的12个月。
我是时间序列预测模型和统计的相对入门者。