gdy wkraczam w prognozowanie z modelami ARIMA, staram się zrozumieć, jak mogę poprawić prognozę opartą na dopasowaniu ARIMA do sezonowości i dryfu.
Moje dane to następujące szeregi czasowe (ponad 3 lata, z wyraźnym trendem wzrostowym i widoczną sezonowością, która wydaje się nie być wspierana przez autokorelację w opóźnieniach 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
Model, który został zasugerowany, auto.arima(bal2sum3years.ts)
dał mi następujący model:
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
Jednak acf(bal2sum3years.ts,max.lag=35)
nie wykazuje współczynników acf wyższych niż 0,3. Sezonowość danych jest jednak dość oczywista - wzrost na początku każdego roku. Oto jak wygląda seria na wykresie:
Wykorzystanie prognozy fit=Arima(bal2sum3years.ts,seasonal=list(order=c(0,1,0),period=12),include.drift=TRUE)
, wywoływanej przez funkcję forecast(fit)
, powoduje, że średnie 12 kolejnych miesięcy są równe ostatnim 12 miesiącom danych plus stała. Można to zobaczyć dzwoniąc plot(forecast(fit))
,
Sprawdziłem również reszty, które nie są autokorelowane, ale mają dodatnią średnią (niezerową).
Dopasowanie nie modeluje dokładnie oryginalnej serii czasowej, moim zdaniem (niebieski oryginalna seria czasowa, czerwony to fitted(fit)
:
Gość jest, czy model jest nieprawidłowy? Czy coś brakuje? Jak mogę ulepszyć model? Wydaje się, że model zajmuje dosłownie ostatnie 12 miesięcy i dodaje stałą, aby osiągnąć kolejne 12 miesięcy.
Jestem względnie początkującym w modelach i statystykach prognozowania szeregów czasowych.