ML Estimates for Fractionally-Differenced ARIMA (p,d,q) models
fracdiff.RdCalculates 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).
Arguments
- x
time series (numeric vector) for the ARIMA model
- nar
number of autoregressive parameters \(p\).
- nma
number of moving average parameters \(q\).
- ar
initial autoregressive parameters.
- ma
initial moving average parameters.
- dtol
interval of uncertainty for \(d\). If
dtolis negative or NULL, the fourth root of machine precision will be used.dtolwill be altered if necessary by the program.- drange
interval over which the likelihood function is to be maximized as a function of \(d\).
- h
size of finite difference interval for numerical derivatives. By default (or if negative),
h = min(0.1, eps.5 * (1+ abs(cllf))), whereclff := log. max.likelihood(as returned) andeps.5 := sqrt(.Machine$double.neg.eps)(typically 1.05e-8).This is used to compute a finite difference approximation to the Hessian, and hence only influences the cov, cor, and std.error computations; use
fracdiff.var()to change this after the estimation process.- M
number of terms in the likelihood approximation (see Haslett and Raftery 1989).
- trace
optional integer, specifying a trace level. If positive, currently the “outer loop” iterations produce one line of diagnostic output.
Details
The fracdiff package has — for historical reason, namely,
S-plus arima() compatibility — used an unusual
parametrization for the MA part, see also the ‘Details’ section
in arima (in standard R's stats package).
The ARMA (i.e., \(d = 0\)) model in fracdiff() and
fracdiff.sim() is
$$X_t - a_1X_{t-1} - \cdots - a_pX_{t-p} = e_t - b_1e_{t-1} - \dots - b_qe_{t-q},$$
where \(e_i\) are mean zero i.i.d., for fracdiff()'s
estimation, \(e_i \sim \mathcal{N}(0,\sigma^2)\).
This model indeed has the signs of the MA coefficients \(b_j\)
inverted, compared to other parametrizations, including
Wikipedia's
https://en.wikipedia.org/wiki/Autoregressive_moving-average_model
and the one of arima.
Note that NA's in the initial values for ar or ma
are replaced by \(0\)'s.
Value
an object of S3 class "fracdiff", which is
a list with components:
- log.likelihood
logarithm of the maximum likelihood
- d
optimal fractional-differencing parameter
- ar
vector of optimal autoregressive parameters
- ma
vector of optimal moving average parameters
- covariance.dpq
covariance matrix of the parameter estimates (order : d, ar, ma).
- stderror.dpq
standard errors of the parameter estimates
c(d, ar, ma).- correlation.dpq
correlation matrix of the parameter estimates (order : d, ar, ma).
- h
interval used for numerical derivatives, see
hargument.- dtol
interval of uncertainty for d; possibly altered from input
dtol.- M
as input.
- hessian.dpq
the approximate Hessian matrix \(H\) of 2nd order partial derivatives of the likelihood with respect to the parameters; this is (internally) used to compute
covariance.dpq, the approximate asymptotic covariance matrix as \(C = (-H)^{-1}\).
Note
Ordinarily, nar and nma should not be too large (say < 10)
to avoid degeneracy in the model. The function
fracdiff.sim is available for generating test problems.
Method
The optimization is carried out in two levels:
an outer univariate unimodal
optimization in d over the interval drange (typically [0,.5]),
using Brent's fmin algorithm), and
an inner nonlinear least-squares optimization in the AR and MA parameters to
minimize white noise variance (uses the MINPACK subroutine lmDER).
written by Chris Fraley (March 1991).
Warning
The variance-covariance matrix and consequently the standard errors
may be quite inaccurate, see the example in fracdiff.var.
References
J. Haslett and A. E. Raftery (1989) Space-time Modelling with Long-memory Dependence: Assessing Ireland's Wind Power Resource (with Discussion); Applied Statistics 38, 1–50.
R. Brent (1973) Algorithms for Minimization without Derivatives, Prentice-Hall
J. J. More, B. S. Garbow, and K. E. Hillstrom (1980) Users Guide for MINPACK-1, Technical Report ANL-80-74, Applied Mathematics Division, Argonne National Laboratory.
See also
coef.fracdiff and other methods for "fracdiff"
objects;
fracdiff.var() for re-estimation of variances or
standard errors;
fracdiff.sim
Examples
ts.test <- fracdiff.sim( 5000, ar = .2, ma = -.4, d = .3)
fd. <- fracdiff( ts.test$series,
nar = length(ts.test$ar), nma = length(ts.test$ma))
fd.
#>
#> Call:
#> fracdiff(x = ts.test$series, nar = length(ts.test$ar), nma = length(ts.test$ma))
#>
#> Coefficients:
#> d ar ma
#> 0.3111219 0.2376722 -0.3873700
#> sigma[eps] = 1.015861
#> a list with components:
#> [1] "log.likelihood" "n" "msg" "d"
#> [5] "ar" "ma" "covariance.dpq" "fnormMin"
#> [9] "sigma" "stderror.dpq" "correlation.dpq" "h"
#> [13] "d.tol" "M" "hessian.dpq" "length.w"
#> [17] "residuals" "fitted" "call"
## Confidence intervals
confint(fd.)
#> 2.5 % 97.5 %
#> d 0.2788698 0.3433740
#> ar 0.1726554 0.3026889
#> ma -0.4335520 -0.3411879
## with iteration output
fd2 <- fracdiff(ts.test$series, nar = 1, nma = 1, trace = 1)
all.equal(fd., fd2)
#> [1] "Component “call”: target, current do not match when deparsed"