Fit ARMA Models to Time Series

Fit an ARMA model to a univariate time series by conditional least squares. For exact maximum likelihood estimation see arima0.

arma (x, order = c(1, 1), lag = NULL, coef = NULL, include.intercept = TRUE,
      series = NULL, qr.tol = 1e-07, ...)
coef (object)
residuals (object)
fitted (object)
print (object, digits = max(3,.Options$digits-3))
summary (object)
plot (object, ask = interactive())
print.summary (object, digits = max(3,.Options$digits-3),
               signif.stars = .Options$show.signif.stars, ...)
a numeric vector or time series.
a two dimensional integer vector giving the orders of the model to fit. order[1] corresponds to the AR part and order[2] to the MA part.
a list with components ar and ma. Each component is an integer vector, specifying the AR and MA lags that are included in the model. If both, order and lag, are given, only the specification
If given this numeric vector is used as the initial estimate of the ARMA coefficients. The preliminary estimator suggested in Hannan and Rissanen (1982) is used for the default initialization.
Should the model contain an intercept?
name for the series. Defaults to deparse(substitute(x)).
the tol argument for qr when computing the asymptotic standard errors of coef.
additional arguments for optim when fitting the model.
a fit from arma.
digits, signif.stars
see print.coefmat.
Should the plot method work interactively? See interactive.
additional arguments for print.

The following parametrization is used for the ARMA(p,q) model: $$y[t] = a[0] + a[1]y[t-1] + \dots + a[p]y[t-p] + b[1]e[t-1] + \dots + b[q]e[t-q] + e[t],$$ where a[0] is set to zero if no intercept is included. By using the argument lag, it is possible to fit a parsimonious submodel by setting arbitrary a[i] and b[i] to zero. arma uses optim to minimize the conditional sum-of-squared errors. The gradient is computed, if it is needed, by a finite-difference approximation. Default initialization is done by fitting a pure high-order AR model (see ar.ols). The estimated residuals are then used for computing a least squares estimator of the full ARMA model. See Hannan and Rissanen (1982) for details. summary computes the asymptotic standard errors of the coefficient estimates from the numerically differentiated Hessian matrix approximation. The AIC is computed from the conditional sum-of-squared errors and not from the true maximum likelihood function. That may be problematic.


  • For arma and its methods print and plot a list of class "arma" with the following elements:
  • lagthe lag specification of the fitted model.
  • coefestimated ARMA coefficients for the fitted model.
  • cssthe conditional sum-of-squared errors.
  • n.usedthe number of observations of x.
  • residualsthe series of residuals.
  • fitted.valuesthe fitted series.
  • seriesthe name of the series x.
  • frequencythe frequency of the series x.
  • callthe call of the arma function.
  • asymptotic-theory standard errors of the coefficient estimates.
  • convergenceThe convergence integer code from optim.
  • include.interceptDoes the model contain an intercept?
  • For coef, a numeric vector, for residuals and fitted a univariate time series. For summary and print.summary a list of class "summary.arma".


E. J. Hannan and J. Rissanen (1982): Recursive Estimation of Mixed Autoregressive-Moving Average Order. Biometrika 69, 81-94.

See Also

arima0, ar

  • arma
  • coef.arma
  • residuals.arma
  • fitted.arma
  • print.arma
  • summary.arma
  • plot.arma
  • print.summary.arma
data (tcm)  
r <- diff(tcm10y)
summary (r.arma <- arma (r, order = c(1, 0)))
summary (r.arma <- arma (r, order = c(2, 0)))
summary (r.arma <- arma (r, order = c(0, 1)))
summary (r.arma <- arma (r, order = c(0, 2)))
summary (r.arma <- arma (r, order = c(1, 1)))
plot (r.arma)

data (nino)
s <- nino3.4
summary (s.arma <- arma (s, order=c(20,0)))
summary (s.arma
         <- arma (s, lag=list(ar=c(1,3,7,10,12,13,16,17,19),ma=NULL)))
acf (residuals(s.arma), na.action=na.remove)
pacf (residuals(s.arma), na.action=na.remove)
summary (s.arma
         <- arma (s, lag=list(ar=c(1,3,7,10,12,13,16,17,19),ma=12)))
summary (s.arma
         <- arma (s, lag=list(ar=c(1,3,7,10,12,13,16,17),ma=12)))
plot (s.arma)
Documentation reproduced from package tseries, version 0.7-4, License: GPL (see file COPYING), except for ./src/muin2ser.f and ./misc which are free for non-commercial purposes. See file README for details.

Community examples

Looks like there are no examples yet.