3

I have read the questions about the ARIMA and ARMA prediction here and here, and also here.

I'd like to make an one-step ahead forecast in-sample with the ARIMA(p=1,d=1,q=0) model. I have used the forecast packages:

library(forecast)
  set.seed(1)
  n<-252
  mydata1 <- runif(n, 9000, 10000)
  fit1<-Arima(mydata1[1:(n-1)], order=c(1,1,0))
  forecast(fit1, h=1)$mean[1] 
  # 9850.593

Then I have tried to use the predict() function

  predict(fit1, n.ahead=1)$pred[1]
  # 9850.593

The reasults are equal. The ARIMA(1,1,0) model has only one coefficient ar1:

  fit1$coef[1]
  # ar1 
  # -0.4896545 

I have tried to write the one-step ahead prediction: $$\hat Y_{n|n-1} = \hat \mu + \hat{ar_1} \cdot (Y_{n-1} - \hat \mu).$$

and then make the calculation in R:

mean(mydata1[n-1]) + coef(fit1)[1] * (mydata1[n-1] - mean(mydata1[n-1]))
#     ar1 
# 9761.974 

The manual result is 9761.974 and it is not equal to 9850.593. I think my mistake in the formula because I should use the first difference of time series (d=1) but not the original time series.

Question. Could anyone guide me in the manual calculation?

Nick
  • 792
  • 5
  • 25

1 Answers1

6

The ARIMA(1,1,0) model is defined as follows: $$ (y_t - y_{t-1}) = \phi (y_{t-1} - y_{t-2}) + \varepsilon_t \,, \quad \varepsilon_t \sim NID(0, \sigma^2) \,. $$

The one-step ahead forecast is then (forwarding the above expression one period ahead):

$$ \hat{y}_{t+1} = \hat{y}_t + \phi (\hat{y}_t - \hat{y}_{t-1}) + \underbrace{E(\varepsilon_{t+1})}_{=0} \,. $$

In your example:

coef(fit1)*(mydata1[n-1]-mydata1[n-2])+mydata1[n-1]
# 9850.593 
# agreeing with
predict(fit1, n.ahead=1)$pred[1]
# [1] 9850.593
javlacalle
  • 11,184
  • 27
  • 53
  • The above was super helpful! what will it be if exogenous variables were in the mix? – Shoaibkhanz Oct 20 '19 at 19:23
  • @Shoaibkhanz You may be interested in [this](https://stats.stackexchange.com/questions/103010/) and [this](https://stats.stackexchange.com/questions/141109/) post. – javlacalle Oct 22 '19 at 17:49