armaSim
Simulates an artificial ARMA time series process,
armaFit
Fits the parameters of an ARMA time series process,
print
Print Method,
plot
Plot Method,
summary
Summary Method,
predict
Forecasts and optionally plots an ARMA process,
fitted
Method, returns fitted values,
coef|coefficients
Method, returns coefficients,
residuals
Method, returns residuals. }armaSim(model = list(ar = c(0.5, -0.5), d = 0, ma = 0.1), n = 100,
innov = NULL, n.start = 100, start.innov = NULL,
rand.gen = rnorm, rseed = NULL, addControl = FALSE, ...) armaFit(formula, data, method = c("mle", "ols"), include.mean = TRUE,
fixed = NULL, title = NULL, description = NULL, ...)
## S3 method for class 'fARMA':
show(object)
## S3 method for class 'fARMA':
plot(x, which = "ask", gof.lag = 10, \dots)
## S3 method for class 'fARMA':
summary(object, doplot = TRUE, which = "all", \dots)
## S3 method for class 'fARMA':
predict(object, n.ahead = 10, n.back = 50, conf = c(80, 95),
doplot = TRUE, ...)
## S3 method for class 'fARMA':
fitted(object, \dots)
## S3 method for class 'fARMA':
coef(object, \dots)
## S3 method for class 'fARMA':
residuals(object, \dots)
data
, the variables are taken
from environment(formula)
, typically the environment from which
armaFit
ipredict
and summary
methods. By default,
this value is set to TRUE
and thus the function calls generate
beside NA
entries in
fixed
will be varied. In this way subset ARMA processes
can be modeled. ARIMA modelling x ~ ar(q)
,
x ~ ma(p)
,
x ~ arma(p, q)
,
x ~ arima(p, d, q)
, or
x ~ arf
TRUE
, note that for differenced series a mean would
not affect the fit nor predictions.innov
will be generated using
the random number generator specified by rand.gen
.
Missing values are not allomethod="mle"
. In the case of an AR
model the parameter estimation car
is a numeric vector giving the AR coefficients,
d
is an integer value giving the degree of differencing,
and ma
is innov
is provided). The default value is 100.predict
method. n.ahead
determines how far ahead forecasts should be evaluated together
with errors on the confidence intervals given by the argument
rand.gen
if start.innov
is not provided.fARMA
returned by the fitting function
armaFit
and serves as input for the summary
, and
predict
methods. Some methods allow for additional
argumrand.gen
will be a random number generator.
Additional arguments required by the random number generator
rand.gen
, usually the locaset.seed(rseed)
will be called.which
is set to "ask"
the function will
interactively ask which plot should be displayed. This is
the default value for the plot
method. If
which="all"
is specified alfARMA
returned by the fitting
function armaFit
and serves as input for the predict
,
print
, print.summary
, and plot
methods.
armaFit
returns an S4 object of class "fARMA"
, with the following
slots:x~ar(p)
calls the underlying functions
ar.mle
or ar.ols
depending on the
method
's choice.
For definiteness, the AR models are defined through$$x_t - \mu = a_1(x_{t-1} - \mu) + \cdots + a_p(x_{t-p} - \mu) + e_t$$
Order selection can be achieved through the comparison of AIC
values for different model specifications. However this may be
problematic, as of the methods here only ar.mle
performs
true maximum likelihood estimation. The AIC is computed as if
the variance estimate were the MLE, omitting the determinant
term from the likelihood. Note that this is not the same as the
Gaussian likelihood evaluated at the estimated parameter values.
With method="yw"
the variance matrix of the innovations is
computed from the fitted coefficients and the autocovariance of
x
. Burg's method allows for two alternatives
method="burg1"
or method="burg2"
to estimate the
innovations variance and hence AIC. Method 1 is to use the update
given by the Levinson-Durbin recursion (Brockwell and Davis, 1991),
and follows S-PLUS. Method 2 is the mean of the sum of squares of
the forward and backward prediction errors (as in Brockwell and Davis,
1996). Percival and Walden (1998) discuss both.
[stats:ar]
MA - Moving-Average Modelling:
The argument x~ma(q)
maps the call to the
argument x ~ arima(0, 0, q)
.
ARMA - Auto-Regressive Moving-Average Modelling:
The argument x~arma(p,q)
maps the call to the
argument x~arima(p, 0, q)
.
ARIMA - Integrated ARMA Modelling:
The argument x~arima()
calls the underlying function
arima
from R's ts
package. For definiteness, the AR
models are defined through
$$x_t = a_1x_{t-1} + \cdots + a_px_{t-p} + e_t + b_1e_{t-1} + \dots + b_qe_{t-q}$$
and so the MA coefficients differ in sign from those of
S-PLUS. Further, if include.mean
is TRUE
, this formula
applies to $x-m$ rather than $x$. For ARIMA models with
differencing, the differenced series follows a zero-mean ARMA model.
The variance matrix of the estimates is found from the Hessian of
the log-likelihood, and so may only be a rough guide.
Optimization is done by optim
. It will work
best if the columns in xreg
are roughly scaled to zero mean
and unit variance, but does attempt to estimate suitable scalings.
The exact likelihood is computed via a state-space representation
of the ARIMA process, and the innovations and their variance found
by a Kalman filter. The initialization of the differenced ARMA
process uses stationarity. For a differenced process the
non-stationary components are given a diffuse prior (controlled
by kappa
). Observations which are still controlled by the
diffuse prior (determined by having a Kalman gain of at least
1e4
) are excluded from the likelihood calculations. (This
gives comparable results to arima0
in the absence
of missing values, when the observations excluded are precisely those
dropped by the differencing.)
Missing values are allowed, and are handled exactly in method "ML"
.
If transform.pars
is true, the optimization is done using an
alternative parametrization which is a variation on that suggested by
Jones (1980) and ensures that the model is stationary. For an AR(p)
model the parametrization is via the inverse tanh of the partial
autocorrelations: the same procedure is applied (separately) to the
AR and seasonal AR terms. The MA terms are not constrained to be
invertible during optimization, but they will be converted to
invertible form after optimization if transform.pars
is true.
Conditional sum-of-squares is provided mainly for expositional
purposes. This computes the sum of squares of the fitted innovations
from observation n.cond
on, (where n.cond
is at least
the maximum lag of an AR term), treating all earlier innovations to
be zero. Argument n.cond
can be used to allow comparability
between different fits. The ``part log-likelihood'' is the first
term, half the log of the estimated mean square. Missing values
are allowed, but will cause many of the innovations to be missing.
When regressors are specified, they are orthogonalized prior to
fitting unless any of the coefficients is fixed. It can be helpful to
roughly scale the regressors to zero mean and unit variance.
Note from arima
: The functions parse their arguments to the
original time series functions available in R's time series library
ts
.
The results are likely to be different from S-PLUS's
arima.mle
, which computes a conditional likelihood and does
not include a mean in the model. Further, the convention used by
arima.mle
reverses the signs of the MA coefficients.
[stats:arima]
ARFIMA/FRACDIFF Modelling:
The argument x~arfima()
calls the underlying functions from
R's fracdiff
package. The estimator calculates the maximum
likelihood estimators of the parameters of a fractionally-differenced
ARIMA (p,d,q) model, together (if possible) with their estimated
covariance and correlation matrices and standard errors, as well
as the value of the maximized likelihood. The likelihood is
approximated using the fast and accurate method of Haslett and
Raftery (1989). Note, the number of AR and MA coefficients should
not be too large (say < 10) to avoid degeneracy in the model.
The optimization is carried out in two levels: an outer univariate
unimodal optimization in d over the interval [0,.5], and an inner
nonlinear least-squares optimization in the AR and MA parameters to
minimize white noise variance.
[fracdiff:fracdiff]
Jones, R.H. (1980); Maximum likelihood fitting of ARMA models to time series with missing observations, Technometrics, 20, 389--395.
Percival, D.P. and Walden, A.T. (1998); Spectral Analysis for Physical Applications. Cambridge University Press.
Whittle, P. (1963); On the fitting of multivariate autoregressions and the approximate canonical factorization of a spectral matrix. Biometrika 40, 129--134. Haslett J. and Raftery A.E. (1989); Space-time Modelling with Long-memory Dependence: Assessing Ireland's Wind Power Resource (with Discussion), Applied Statistics 38, 1--50.
## armaSim -
# Simulation:
x = armaSim(model = list(ar = c(0.5, -0.5), ma = 0.1), n = 1000)
## armaFit -
# Estimate the Parameters:
fit = armaFit(~ arma(2, 1), data = x)
print(fit)
## summary -
# Diagnostic Analysis:
par(mfrow = c(2, 2), cex = 0.7)
summary(fit, which = "all")
## plot -
# Interactive Plots:
# par(mfrow = c(1, 1))
# plot(fit)
## predict -
# Forecast 5 Steps Ahead:
par(mfrow = c(1, 1))
predict(fit, 5)
## armaFit -
# Alternative Calls:
TS = MSFT
armaFit(formula = diff(log(Close)) ~ ar(5), data = TS)
armaFit(Close ~ ar(5), data = returns(TS, digits = 12))
TS.RET = returns(TS, digits = 12)
armaFit(Close ~ ar(5), TS.RET)
armaFit(Close ~ ar(5), as.data.frame(TS.RET))
armaFit(~ ar(5), as.vector(TS.RET[, "Close"]))
armaFit(~ ar(5), as.ts(TS.RET)[, "Close"])
attach(TS.RET)
armaFit(Close ~ ar(5))
detach(TS.RET)
Run the code above in your browser using DataLab