I am wondering why the mean of my model is so high leading to a high forecast of the time series data. I included a linear regression in the external regressors as there is a clear downward trend.

I think I may have specified the linear regression incorrectly in the external regressor. Should I use instead seq(112,1,by=-1) as there is a negative correlation? This gives me a mean in my model of 3 which seems more reasonable based on previous values.

Model specification using rugarch:

garchspec_ged = ugarchspec(variance.model=list(model="sGARCH", garchOrder=c(1,1)), 
        mean.model=list(armaOrder=c(0,0), external.regressors = matrix(seq(1,112,1)),
garchfit_ged <- ugarchfit(data = yts, spec = garchspec_ged)

summary output:

*          GARCH Model Fit        *

Conditional Variance Dynamics   
GARCH Model : sGARCH(1,1)
Mean Model  : ARFIMA(0,0,0)
Distribution    : ged 

Optimal Parameters
        Estimate  Std. Error  t value Pr(>|t|)
mu      17.58611    1.149166 15.30337 0.000000
mxreg1  -0.12230    0.014254 -8.57981 0.000000
omega    0.67124    0.760973  0.88208 0.377736
alpha1   0.08434    0.053123  1.58763 0.112369
beta1    0.87592    0.067514 12.97392 0.000000
shape    2.19405    0.493805  4.44316 0.000009

Robust Standard Errors:
        Estimate  Std. Error  t value Pr(>|t|)
mu      17.58611    1.713427  10.2637 0.000000
mxreg1  -0.12230    0.020444  -5.9822 0.000000
omega    0.67124    0.548106   1.2246 0.220709
alpha1   0.08434    0.047150   1.7888 0.073651
beta1    0.87592    0.052031  16.8344 0.000000
shape    2.19405    0.529629   4.1426 0.000034

LogLikelihood : -337.3251 

Information Criteria
Akaike       6.1308
Bayes        6.2764
Shibata      6.1254
Hannan-Quinn 6.1899

Weighted Ljung-Box Test on Standardized Residuals
                        statistic p-value
Lag[1]                     0.4786  0.4890
Lag[2*(p+q)+(p+q)-1][2]    0.5086  0.6896
Lag[4*(p+q)+(p+q)-1][5]    0.7354  0.9160
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
                        statistic p-value
Lag[1]                    0.01878  0.8910
Lag[2*(p+q)+(p+q)-1][5]   0.85125  0.8923
Lag[4*(p+q)+(p+q)-1][9]   3.64610  0.6493

Weighted ARCH LM Tests
            Statistic Shape Scale P-Value
ARCH Lag[3]   0.08649 0.500 2.000  0.7687
ARCH Lag[5]   1.61721 1.440 1.667  0.5620
ARCH Lag[7]   3.16708 2.315 1.543  0.4826

Nyblom stability test
Joint Statistic:  1.2853
Individual Statistics:              
mu     0.06942
mxreg1 0.09061
omega  0.04553
alpha1 0.19344
beta1  0.12067
shape  0.11941

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.49 1.68 2.12
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test

Adjusted Pearson Goodness-of-Fit Test:
  group statistic p-value(g-1)
1    20     27.64      0.09055
2    30     44.43      0.03341
3    40     50.86      0.09675
4    50     53.18      0.31646

Forecast of series:

garchfit_ged.fcst = ugarchforecast(garchfit_ged, n.ahead=12)
plot(garchfit_ged.fcst, which = 1)

Forecast with model including linear regression

Forecast with model including seq(112,1,by=-1) in the regressor instead:

enter image description here


1 Answer 1


Given your model, your forecast is reasonable whichever of the two ways you specify the external regressor (I think the two ways are equivalent; note that the true value of $\mu$ is defined relative to how you specify the external regressor). You just extrapolate the negative trend, having adjusted for the mean. The mean is high relative to the few preceding observations, so it looks like the forecast is high.

The question is, do you think the model for the conditional mean (that says the next observation will follow the negative trend, adjusted for the overall mean) is fine? If yes, then your forecast is also fine as it follows from the model. If no, consider some other model for the conditional mean, e.g. that the next observation follows the trend, adjusted for the current observation rather than the mean: mean.model=list(armaOrder=c(1,0), external.regressors = matrix(seq(1,112,1)). (In many cases, the simple model that you have may be hard to beat. But only you know the specifics of the phenomenon you are modelling, so maybe there is a better model.)

  • $\begingroup$ Thanks for the reply. The last point is actually 1, I think that line is to link the actual last point to the prediction as the mean is so high. I have uploaded the forecast when I use the negative sequence in the external regressor. Why are these forecasts be so different? One reason for creating the model is to show the value is decreasing over time after accounting for heteroscedasticity, if I change the regressor to the negative sequence then the coefficient for the linear trend is positive which doesn't make sense to me. $\endgroup$
    – user553480
    Jun 15, 2020 at 13:17
  • $\begingroup$ @user553480, I was too hasty with interpreting the mean model. See my updated answer. The fact that your external regressor changes from $x$ to $-x$ should not change the forecast. I wonder what else is going on... $\endgroup$ Jun 15, 2020 at 14:02
  • $\begingroup$ Based on my ACF/PACF plot an ARMA model doesn't make sense. When I use the negative sequence in the external regressor my coefficient for mxreg1 is 0.122298, is that logical for data with a decreasing linear trend? It also gives a mean of 3.8 which I suppose does not seem right with the whole data. I would be happy to provide the vector of data if you wanted to try it out yourself using the r code :) $\endgroup$
    – user553480
    Jun 15, 2020 at 14:41
  • $\begingroup$ @user553480, $\mu$ has to be understood relative to the mean of the external regressor. It does not have to make much sense on its own. What has to make sense as the level of the series is $\mu+mxreg1\times t$ where $t$ is the trend. $3.8+0.122298\times (122-t+1)$ has to make sense as the level for time period $t$. $\endgroup$ Jun 15, 2020 at 15:01
  • $\begingroup$ that would leave me with a decreasing sequence from month 1 to 112 which makes sense based on the data, so I think that is okay to use as my model? $\endgroup$
    – user553480
    Jun 15, 2020 at 15:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.