I have univariate time series data (windspeed at a particular place) measured at 1 hour interval for 5 years.
I used auto.arima()
to get the following parameters:
ar1 ar2 ma1 ma2 intercept 1.5314 -0.55 -0.1261 0.032 10.1223 s.e. 0.0105 0.0103 0.011 0.006 0.1211 sigma^2 estimated as 0.4865 : log likelihood = -83546.65 AIC = 167105.3 AICc = 167105.3 BIC = 167161
I am forecasting using the following equation:
e[t] <- rnorm(1, 0, sqrt(sigma^2)) x[t] <- ar1*x[t-1] + ar2*x[t-2] + e[t] + ma1*e[t-1] + ma2*e[t-2]
When the result is compared with forecast()
function, I get completely different answers. The freq spectrum of forecast()
function's output resembles original time-series freq spectrum. While the manual forecast signal looks like noise in freq spectrum.
I can't use forecast()
function because the application is in C++. Are the equations correct? What's the right way of forecasting from coefficients?
Best Answer
If you type forecast.Arima
you can see the source of the forecast.Arima function. This function calls the predict.Arima function, which is probably what you want to implement. You can view the source by typing stats:::predict.Arima
. You will probably additionally need to look at the source of the KalmanForecast
function, which is called by predict.Arima
.
You can then port the source code from R to C++. You can probably remove the parts that refer to xreg
and drift
as you don't use them in your model.
e[t] <- rnorm(1, 0, sqrt(sigma^2))
What is the point of adding random noise to your forecast? As you have observed, it makes your forecast noisy…
Similar Posts:
- Solved – Forecasting with ARIMA with outlier
- Solved – Use ARIMA equation outside R
- Solved – Arimax Prediction : Using Forecast Package
- Solved – Are spectral decompositions of time-series useful for modeling/forecasting, or are they more of a tool for analysis
- Solved – Error in the standard deviation when simulating an ARMA(1,1) using arima.sim