I have a time series on consumer price index (CPI) and want to forecast inflation which is in my case the first difference of the log of CPI: π_t=Log(P_t) - Log(P_t-1)
. This is the time series:
The ACF of the series decreases slowly as the lag increases (trend?) and a typical “scalloped” shape is also observable (seasonality?).
From my perspective there is no clear evidence for seasonality according to the seasonalityplot. However in the final ARIMA model when applying auto.arima
seasonality is taken into account.
Both the ADF test and KPSS test verify that this time series is nonstationary. Ndiffs() suggest to use d=1. the ADF test and KPSS test verify that the first diff series is stationary. The ACF and PACF plots are the following:
Applying the auto.arima
function yields the following results:
Series: ts_cpi
ARIMA(3,1,1)(0,0,2)[12]
Coefficients:
ar1 ar2 ar3 ma1 sma1 sma2
0.1740 -0.0102 -0.1190 -0.8345 -0.0764 -0.1181
s.e. 0.0466 0.0415 0.0414 0.0306 0.0370 0.0352
sigma^2 estimated as 4.914e-06: log likelihood=3442.04
AIC=-6870.08 AICc=-6869.93 BIC=-6837.9
Training set error measures:
ME RMSE MAE
Training set 4.863658e-06 0.002206118 0.001545581
The Ljung-Box test indicates that the residuals are autocorrelated (24lags):
Ljung-Box test
data: Residuals from ARIMA(3,1,1)(0,0,2)[12]
Q* = 38.23, df = 18, p-value = 0.003611
Model df: 6. Total lags used: 24
How can i proceed in order to have uncorrelated residuals and thus stable forecast estimations? Should i manually add more lags to the ARIMA model or make use of heteroskedastic robust errors?
auto.arima
on data that has not been differenced.auto.arima
will take care of that. $\endgroup$