Estimation by OLS, two-step OLS if a variance specification is specified: In the first the mean specification (AR-X) is estimated, whereas in the second step the log-variance specification (log-ARCH-X) is estimated.
The AR-X mean specification can contain an intercept, AR-terms, lagged moving averages of the regressand and other conditioning covariates ('X'). The log-variance specification can contain log-ARCH terms, asymmetry or 'leverage' terms, log(EqWMA) where EqWMA is a lagged equally weighted moving average of past squared residuals (a volatility proxy) and other conditioning covariates ('X').
y: numeric vector, time-series or zoo object. Missing values in the beginning and at the end of the series is allowed, as they are removed with the na.trim command
mc: logical. TRUE (default) includes an intercept in the mean specification, whereas FALSE does not
ar: either NULL (default) or an integer vector, say, c(2,4) or 1:4. The AR-lags to include in the mean specification. If NULL, then no lags are included
ewma: either NULL (default) or a list with arguments sent to the eqwma function. In the latter case a lagged moving average of y is included as a regressor
mxreg: either NULL (default) or a numeric vector or matrix, say, a zoo object, of conditioning variables. Note that, if both y and mxreg are zoo objects, then their samples are chosen to match
vc: logical. TRUE includes an intercept in the log-variance specification, whereas FALSE (default) does not. If the log-variance specification contains any other item but the log-variance intercept, then vc is set to TRUE
arch: either NULL (default) or an integer vector, say, c(1,3) or 2:5. The log-ARCH lags to include in the log-variance specification
asym: either NULL (default) or an integer vector, say, c(1) or 1:3. The asymmetry (i.e. 'leverage') terms to include in the log-variance specification
log.ewma: either NULL (default) or a vector of the lengths of the volatility proxies, see leqwma
vxreg: either NULL (default) or a numeric vector or matrix, say, a zoo object, of conditioning variables. If both y and mxreg are zoo objects, then their samples are chosen to match.
zero.adj: NULL (default) or a strictly positive numeric scalar. If NULL, the zeros in the squared residuals are replaced by the 10 percent quantile of the non-zero squared residuals. If zero.adj is a strictly positive numeric scalar, then this value is used to replace the zeros of the squared residuals.
vc.adj: logical. If TRUE (default), then the log-variance intercept is adjusted by the estimate of E[ln(z^2)], where z is the standardised error. This adjustment is needed for the conditional scale to be equal to the conditional standard deviation. If FALSE, then the log-variance intercept is not adjusted
vcov.type: character vector, "ordinary" (default), "white" or "newey-west". If "ordinary", then the ordinary variance-covariance matrix is used for inference. If "white", then the White (1980) heteroscedasticity-robust matrix is used. If "newey-west", then the Newey and West (1987) heteroscedasticity and autocorrelation-robust matrix is used
qstat.options: NULL (default) or an integer vector of length two, say, c(1,1). The first value sets the lag-order of the AR diagnostic test, whereas the second value sets the lag-order of the ARCH diagnostic test. If NULL, then the two values of the vector are set automatically
normality.JarqueB: FALSE (default) or TRUE. If TRUE, then the results of the Jarque and Bera (1980) test for non-normality in the residuals are included in the estimation results.
user.estimator: NULL (default) or a list with one entry, name, containing the name of the user-defined estimator. Additional items, if any, are passed on as arguments to the estimator in question
user.diagnostics: NULL (default) or a list with two entries, name and pval, see the user.fun argument in diagnostics
tol: numeric value (default = 1e-07). The tolerance for detecting linear dependencies in the columns of the regressors (see qr function). Only used if LAPACK is FALSE (default) and user.estimator is NULL.
LAPACK: logical. If TRUE, then use LAPACK. If FALSE (default), then use LINPACK (see qr function). Only used if user.estimator is NULL.
singular.ok: logical. If TRUE (default), the regressors are checked for singularity, and the ones causing it are automatically removed.
plot: NULL or logical. If TRUE, the fitted values and the residuals are plotted. If NULL (default), then the value set by options determines whether a plot is produced or not.
Details
For an overview of the AR-X model with log-ARCH-X errors, see Pretis, Reade and Sucarrat (2018): tools:::Rd_expr_doi("10.18637/jss.v086.i03") .
The arguments user.estimator and user.diagnostics enables the specification of user-defined estimators and user-defined diagnostics. To this end, the principles of the same arguments in getsFun are followed, see its documentation under "Details", and Sucarrat (2020): https://journal.r-project.org/archive/2021/RJ-2021-024/.
Returns
A list of class 'arx'
References
C. Jarque and A. Bera (1980): 'Efficient Tests for Normality, Homoscedasticity and Serial Independence'. Economics Letters 6, pp. 255-259. tools:::Rd_expr_doi("10.1016/0165-1765(80)90024-5")
Felix Pretis, James Reade and Genaro Sucarrat (2018): 'Automated General-to-Specific (GETS) Regression Modeling and Indicator Saturation for Outliers and Structural Breaks'. Journal of Statistical Software 86, Number 3, pp. 1-44. tools:::Rd_expr_doi("10.18637/jss.v086.i03")
Halbert White (1980): 'A Heteroskedasticity-Consistent Covariance Matrix Estimator and a Direct Test for Heteroskedasticity', Econometrica 48, pp. 817-838.
Whitney K. Newey and Kenned D. West (1987): 'A Simple, Positive Semi-Definite, Heteroskedasticity and Autocorrelation Consistent Covariance Matrix', Econometrica 55, pp. 703-708.
##Simulate from an AR(1):set.seed(123)y <- arima.sim(list(ar=0.4),70)##estimate an AR(2) with intercept:arx(y, mc=TRUE, ar=1:2)##Simulate four independent Gaussian regressors:xregs <- matrix(rnorm(4*70),70,4)##estimate an AR(2) with intercept and four conditioning##regressors in the mean:arx(y, ar=1:2, mxreg=xregs)##estimate a log-variance specification with a log-ARCH(4)##structure:arx(y, mc=FALSE, arch=1:4)##estimate a log-variance specification with a log-ARCH(4)##structure and an asymmetry/leverage term:arx(y, mc=FALSE, arch=1:4, asym=1)##estimate a log-variance specification with a log-ARCH(4)##structure, an asymmetry or leverage term, a 10-period log(EWMA) as##volatility proxy, and the log of the squareds of the conditioning##regressors in the log-variance specification:arx(y, mc=FALSE, arch=1:4, asym=1, log.ewma=list(length=10), vxreg=log(xregs^2))##estimate an AR(2) with intercept and four conditioning regressors##in the mean, and a log-variance specification with a log-ARCH(4)##structure, an asymmetry or leverage term, a 10-period log(EWMA) as##volatility proxy, and the log of the squareds of the conditioning##regressors in the log-variance specification:arx(y, ar=1:2, mxreg=xregs, arch=1:4, asym=1, log.ewma=list(length=10), vxreg=log(xregs^2))