# Arima forecasting = 0 (for any t > 2)

I have a time series, non-stationary with diff(1).

Here the tests:

# Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
The value of the test statistic is: -5.0157

# KPSS Unit Root / Cointegration Test #
The value of the test statistic is: 0.3134

# Phillips-Perron Unit Root / Cointegration Test #
The value of the test statistic is: -46.2957


it's auto.arima is giving an MA(1) as result, with zero mean.

My problem is when i try forecast it. I get as result a single forecast to t+1, and all other are 0.

Here my data

> str(FBK)
Time-Series [1:85] from 1996 to 2017: 141488 146095 150483 156655 156849 ...

Qtr1     Qtr2     Qtr3     Qtr4
1996 141487.8 146095.2 150483.5 156655.4
1997 156848.6 155937.2 159835.4 158977.9
1998 155368.6 158460.5 155292.1 151925.6
1999 149041.7 148199.1 147471.4 151097.5
2000 170866.3 160620.2 161279.7 165049.0
2001 174538.5 174186.8 168185.2 162310.0
2002 170277.2 168867.3 173917.6 174537.9
2003 166283.4 158245.0 155709.1 165411.8
2004 169761.7 178038.7 185613.5 181901.6
2005 180188.3 181989.6 182036.7 184795.6
2006 189160.3 192084.7 195370.6 204006.3
2007 210459.8 218289.7 226702.1 235539.3
2008 246431.9 257188.7 279232.2 258613.8
2009 236324.7 247540.1 269437.9 292023.5
2010 298190.5 306936.2 321430.3 322751.4
2011 326759.5 333299.8 334288.1 335262.3
2012 341727.2 344935.4 350190.1 354053.4
2013 355690.5 369544.0 371155.2 368577.7
2014 367707.9 357894.1 348534.6 349160.7
2015 338495.1 315932.2 304850.4 284496.2
2016 276963.9 273664.7 263458.5 260517.6
2017 253197.7


I'm using this code:

FBK_arima <- auto.arima(diff(FBK))

Series: diff(FBK)
ARIMA(0,0,1)           with zero mean

Coefficients:
ma1
0.4631
s.e.  0.0981

sigma^2 estimated as 65384314:  log likelihood=-874.63
AIC=1753.26   AICc=1753.41   BIC=1758.13


and when try forecast, i have this:

forecast(FBK_arima, n = 6)

Point Forecast     Lo 80     Hi 80     Lo 95    Hi 95
2017 Q2      -3595.554 -13958.25  6767.145 -19443.93 12252.83
2017 Q3          0.000 -11420.06 11420.056 -17465.47 17465.47
2017 Q4          0.000 -11420.06 11420.056 -17465.47 17465.47
2018 Q1          0.000 -11420.06 11420.056 -17465.47 17465.47
2018 Q2          0.000 -11420.06 11420.056 -17465.47 17465.47
2018 Q3          0.000 -11420.06 11420.056 -17465.47 17465.47
2018 Q4          0.000 -11420.06 11420.056 -17465.47 17465.47
2019 Q1          0.000 -11420.06 11420.056 -17465.47 17465.47


Do someone already got something like this? Where may be the problem? Data? model? In graph seems the stationarity was not solve with diff, but i'm not sure if this is the main problem on forecasting

An MA(1) model with zero mean is

$$y_t = \theta\epsilon_{t-1}+\epsilon_t.$$

Suppose your last observation was $y_t$, and you wish to forecast for $t+1, t+2$ etc. Then your model fitting algorithm has "observed" the innovations up to $\epsilon_t$ (more precisely, it estimated the in-sample means $\hat{y}$ and then subtracted these from the observations to estimate the in-sample innovations.)

So, the first point mean forecast will be

$$\hat{y}_{t+1} = \hat{\theta}\epsilon_t,$$

since for the forecast, we set $\epsilon_{t+1}$ to its mean, which is zero.

However, we don't know yet the innovation we will have at $t+1$, so we cannot plug it into the formula. The best we can do when forecasting two or more periods out is to plug in the expectations of the innovations, which is zero. The resulting point forecast is just the model mean - which happens to be zero in your case.

You may want to think about whether an MA process makes sense for your data. There don't seem to be many data-generating processes that result in MA processes. I personally have this nagging suspicion that their main reason for existence is that one can prove theorems about them, not necessarily that they describe reality well.

Yes, Stephan is correct that an MA process isn't optimal here.

Note that the variance has gotten larger after period 53? You need to test for that and adjust for that. The tsay variance test was used here.

Yes, differencing makes sense, but an AR1 with some outliers detected and adjusted along with Weighted Least Squares due to the change in variance would work here. 1.65 before 54 and 1.0 54 and after.

• So would be the suggested correction adding a binary varible as exogen to receive the weights? Like in a structural broke model. – Adilson V Casula Nov 1 '17 at 14:53
• No, those "pulse" variables are just adjusting for outliers. – Tom Reilly Nov 1 '17 at 15:53