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
will have the same parameters asm1
(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:
Then proceed with your simulations as above.