I have a fairly long time-series of annual abundances ($N_t$) of a wildlife species (73 years of abundances). To forecast the population’s trajectory, I have used ARIMA modeling. Examination of the ACF and PACF of the first-order differenced time-series suggested a 10-year cycle exists. So I used a span 10 seasonal difference to account for this periodic pattern. Therefore, the response variable was:
$$
Y_t=(sqrt{N_t}-sqrt{N_{t-1}})-(sqrt{N_{t-10}}-sqrt{N_{t-11}})
$$
Typically, I would have used a logarithmic transformation but it resulted in heteroscedastic residuals. Examination of the ACF and PACF of $Y_t$ indicated a multiplicative seasonal structure so I fit the model:
$$
ARIMA(0,1,1)(0,1,1)_{10}
$$
using the Forecast Package in R
….library(forecast)
.
Example code for fitting the model:
m1=Arima(y,order=c(0,1,1),seasonal=list(order=c(0,1,1),period=10),include.mean=FALSE)
The residuals of this model were normally distributed, not autocorrelated, and homoscedastic.
I have been using the fitted model from above for some additional simulation work using the simulate.Arima
function. However, I would like to initialize the simulation with a different time-series. The arima.sim
function allows this but the arima.sim
function doesn't seem to handle seasonal ARIMA models. With the simulate.Arima
function one can use the future=TRUE
option to simulate values that are "future to and conditional on the data" in the model m1
. Can the data in the model object m1
simply be replaced to create a simulation that is conditional on different data?
For example:
# Create a new model object for simulation. m.sim=m1 # Replace the data in the model object with the new data. m.sim$x=new # Simulation conditional on the new data. sim.forecasts=replicate(1000,simulate.Arima(m.sim,future=TRUE,bootstrap=TRUE))
Best Answer
You can "fit" the model to different data and then simulate:
m2 <- Arima(z,model=m1) simulate.Arima(m2,future=TRUE,bootstrap=TRUE)
m2
will have the same parameters as m1
(they are not re-estimated), but the residuals, etc., are computed on the new data.
However, I am concerned with your model. Seasonal models are for when the seasonality is fixed and known. With animal population data, you almost certainly have aperiodic population cycling. This is a well-known phenomenon and can easily be handled with non-seasonal ARIMA models. Look at the literature on the Canadian lynx data for discussion.
By all means, use the square root, but then I would use a non-seasonal ARIMA model. Provided the AR order is greater than 1, it is possible to have cycles. See
You can do all this in one step:
m1 <- auto.arima(y, lambda=0.5)
Then proceed with your simulations as above.
Similar Posts:
- Solved – Simulate seasonal ARIMA model with fixed variance and starting point
- Solved – Simulate ARIMA model in R using same starting values as original time series
- Solved – R: How to to simulate ARIMA using starting values
- Solved – Forecasting with ARIMA with outlier
- Solved – Use ARIMA equation outside R