1

I want to forecast the health expenditure of Russia as a share of GDP and I am using data points from 2000-2019. Following is my data:

2000  1.514
2001  1.612
2002  1.721
2003  1.714
2004  1.605
2005  1.52
2006  1.48
2007  1.489
2008  1.543
2009  1.947
2010  1.752
2011  1.64
2012  1.649
2013  1.77
2014  1.857
2015  2.047
2016  2.142
2017  2.17
2018  2.037
2019  2.051

Following are the R codes I have used.

# Load the forecasting package
library(fpp2)

Declare data as Time Series Data

Russia_ShareofGDP_TS <- ts(Russia_ShareofGDP [, 4],start = c(2000)) plot(Russia_ShareofGDP_TS, pch = 19)

Fit ARIMA model

fit_arima<- auto.arima(Russia_ShareofGDP_TS, seasonal=FALSE,stepwise=FALSE,approximation=FALSE) print(summary(fit_arima)) checkresiduals(fit_arima)

Forecast

fcst <- forecast(fit_arima, h=16) autoplot(fcst, xlab = "Time", ylab = "OOP Health Spending Share of GDP", main = "RUSSIAN FEDERATION", pch = 19, col = "blue") print(summary(fcst))

The forecast values for the data are same for each year till 2035. Am I doing something wrong? Kindly help! Following are my result; Forecast method: ARIMA(0,1,0)

Model Information: Series: Russia_ShareofGDP_TS ARIMA(0,1,0)

sigma^2 = 0.01816: log likelihood = 11.12 AIC=-20.24 AICc=-20 BIC=-19.29

Error measures: ME RMSE MAE MPE MAPE MASE ACF1 Training set 0.0269257 0.1313601 0.0950257 1.257031 5.255342 0.9507574 0.04825101

Forecasts: Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 2020 2.051 1.878282 2.223718 1.7868506 2.315149 2021 2.051 1.806740 2.295260 1.6774363 2.424564 2022 2.051 1.751844 2.350156 1.5934798 2.508520 2023 2.051 1.705564 2.396436 1.5227012 2.579299 2024 2.051 1.664791 2.437209 1.4603440 2.641656 2025 2.051 1.627929 2.474071 1.4039688 2.698031 2026 2.051 1.594031 2.507969 1.3521264 2.749874 2027 2.051 1.562480 2.539520 1.3038727 2.798127 2028 2.051 1.532846 2.569154 1.2585518 2.843448 2029 2.051 1.504818 2.597182 1.2156863 2.886314 2030 2.051 1.478159 2.623841 1.1749156 2.927084 2031 2.051 1.452687 2.649313 1.1359597 2.966040 2032 2.051 1.428256 2.673744 1.0985958 3.003404 2033 2.051 1.404748 2.697252 1.0626435 3.039357 2034 2.051 1.382066 2.719934 1.0279538 3.074046 2035 2.051 1.360128 2.741872 0.9944024 3.107598

Richard Hardy
  • 67,272

1 Answers1

2

auto.arima() fits an ARIMA(0,1,0) model. That is, the first differences (that's the $d=1$ parameter) follow an ARMA(0,0) process - in other words, white noise. Thus, the fitted model is

$$ y_t-y_{t-1} = \epsilon_t. $$

This is a random walk: the next observation is just a perturbation of the last observation. auto.arima() does not see enough structure in your data to decide on anything more complicated.

So to forecast the next time point after the last observation, the best we can do is to forecast the last value we observed. And so on for the future. Thus, a flat forecast is exactly what an ARIMA(0,1,0) model does.

Fitting an exponential smoothing model, incidentally, also yields a flat forecast:

plot(forecast(ets(Russia_ShareofGDP_TS),h=16))

Now, I often argue that a flat forecast my well be the best forecast there is. However, in the present case, the upwards trend is rather obvious, and also what we would expect from a country like Russia in this domain. So it seems like our domain knowledge should indeed supersede auto.arima(), and we should use a trended model. We can force a trended model in exponential smoothing by specifying model="ZAZ" (the first "Z" is to let ets decide on the error term, the "A" is for an additive trend, and the last "Z" is to let ets decide on the seasonal term, which is irrelevant here):

plot(forecast(ets(Russia_ShareofGDP_TS,model="ZAZ"),h=16))

ETS with additive trend

Needless to say, we should be careful about extrapolating this trend over the long term. ets here does not want to dampen the trend, but do consider forcing it to do so through the phi parameter.

Stephan Kolassa
  • 123,354
  • Thank you for the answer! But could you please suggest any solution to the problem within ARIMA? I am carrying out the analysis for BRICS countries. The mentioned problem arises only in the case of Russia. Since I am using ARIMA for the other 4 countries, using ets only for Russia will not be feasible. – pragyan monalisa sahoo Oct 28 '22 at 15:48
  • There is no really natural way to force ARIMA to have a trend. You could use a regression on a trend variable with ARIMA errors, by feeding a trend predictor into the xreg parameter: model <- auto.arima(Russia_ShareofGDP_TS,xreg=1:20); plot(forecast(model,xreg=21:36)). It would probably be appropriate to then fit the same model to the other countries. Or you could simply apply ETS to all countries. – Stephan Kolassa Oct 28 '22 at 18:48
  • Thank you for your insightful comment. However, if I want to keep my analysis univariate and follow the exponential smoothening model instead of ARIMA, will that give any lesser quality results? Is ARIMA superior or inferior to exponential smoothening model? – pragyan monalisa sahoo Nov 01 '22 at 15:11
  • You can't say in general. However, my personal impression is that ARIMA often does not perform very well. I suspect its continued popularity among statistical forecasters has more to do with the fact that the statistical theory behind ARIMA has been known much longer than that for exponential smoothing - not with any better preditive performance. – Stephan Kolassa Nov 01 '22 at 21:29
  • Thank you, Mr. Stephan. Your suggestions and comments have been extremely helpful. – pragyan monalisa sahoo Nov 02 '22 at 06:33