arima.sim               package:stats               R Documentation

Simulate from an ARIMA Model

Description:

     Simulate from an ARIMA model.

Usage:

     arima.sim(model, n, rand.gen = rnorm, innov = rand.gen(n, ...),
               n.start = NA, start.innov = rand.gen(n.start, ...),
               ...)

Arguments:

   model: A list with component 'ar' and/or 'ma' giving the AR and MA
          coefficients respectively.  Optionally a component 'order'
          can be used. An empty list gives an ARIMA(0, 0, 0) model,
          that is white noise.

       n: length of output series, before un-differencing.

rand.gen: optional: a function to generate the innovations.

   innov: an optional times series of innovations.  If not provided,
          'rand.gen' is used.

 n.start: length of 'burn-in' period.  If 'NA', the default, a
          reasonable value is computed.

start.innov: an optional times series of innovations to be used for the
          burn-in period.  If supplied there must be at least 'n.start'
          values (and 'n.start' is by default computed inside the
          function).

     ...: additional arguments for 'rand.gen'.  Most usefully, the
          standard deviation of the innovations generated by 'rnorm'
          can be specified by 'sd'.

Details:

     See 'arima' for the precise definition of an ARIMA model.

     The ARMA model is checked for stationarity.

     ARIMA models are specified via the 'order' component of 'model',
     in the same way as for 'arima'.  Other aspects of the 'order'
     component are ignored, but inconsistent specifications of the MA
     and AR orders are detected.  The un-differencing assumes previous
     values of zero, and to remind the user of this, those values are
     returned.

     Random inputs for the 'burn-in' period are generated by calling
     'rand.gen'.

Value:

     A time-series object of class '"ts"'.

See Also:

     'arima'

Examples:

     require(graphics)

     arima.sim(n = 63, list(ar = c(0.8897, -0.4858), ma = c(-0.2279, 0.2488)),
               sd = sqrt(0.1796))
     # mildly long-tailed
     arima.sim(n = 63, list(ar=c(0.8897, -0.4858), ma=c(-0.2279, 0.2488)),
               rand.gen = function(n, ...) sqrt(0.1796) * rt(n, df = 5))

     # An ARIMA simulation
     ts.sim <- arima.sim(list(order = c(1,1,0), ar = 0.7), n = 200)
     ts.plot(ts.sim)

