Learn R Programming

portes (version 2-1)

Hosking: The Modified Multivariate Portmanteau Test, Hosking (1980)

Description

The modified multivariate portmanteau test suggested by Hosking (1980).

Usage

Hosking(obj,lags=seq(5,30,5),order=0,SquaredQ=FALSE)

Arguments

obj
a univariate or multivariate series with class "numeric", "matrix", "ts", or ("mts" "ts"). It can be also an object of fitted time-series model with class "ar",
lags
vector of lag auto-cross correlation coefficients used for Hosking test.
order
needed for degrees of freedom of asymptotic chi-square distribution. If obj is an object with class "ar", "arima0", "Arima", "varest", "FitAR",
SquaredQ
if TRUE then apply the test on the squared values. This checks for Autoregressive Conditional Heteroscedastic, ARCH, effects. When SquaredQ = FALSE, then apply the test on

Value

  • The multivariate test statistic suggested by Hosking (1980) and its associated p-values for different lags based on the asymptotic chi-square distribution with k^2(lags-order) degrees of freedom.

Details

However the portmanteau test statistic can be applied directly on the output objects from the built in R functions ar(), FitAR(), arima(), arim0(), Arima(), auto.arima(), VAR(), garch(), garchFit(), FitFGN(), etc, it works with output objects from any fitted model. In this case, users should write their own function to fit any model they want. The object obj represents the output of this function. This output must be a list with at least two outcomes: the fitted residual and the order of the fitted model (list(res = ..., order = ...)). See the following example with the function FitModel().

References

Hosking, J. R. M. (1980). "The Multivariate Portmanteau Statistic". Journal of American Statistical Association, 75, 602-608.

See Also

acf, Box.test, BoxPierce, LjungBox, LiMcLeod, gvtest, portest, GetResiduals, tar

Examples

Run this code
##############################################################
## Quarterly, west German investment, income, and consumption 
## from first quarter of 1960 to fourth quarter of 1982: 
##############################################################
data(WestGerman)
DiffData <- matrix(numeric(3 * 91), ncol = 3)
  for (i in 1:3) 
    DiffData[, i] <- diff(log(WestGerman[, i]), lag = 1)
fit <- ar.ols(DiffData, intercept = TRUE, order.max = 2)
lags <- c(5,10)
## Apply the test statistic on the fitted model 
Hosking(fit,lags,order = 2)        ## Correct
Hosking(fit,lags)                  ## Correct
## Apply the test statistic on the residuals
res <- ts((fit$resid)[-(1:2), ])
Hosking(res,lags,order = 2)        ## Correct
Hosking(res,lags)                  ## Wrong
##############################################################
## Write a function to fit a model 
## Apply portmanteau test on fitted obj with class "list"
##############################################################
## Example 1
FitModel <- function(data){
    fit <- ar.ols(data, intercept = TRUE, order.max = 2)
    order <- 2
    res <- res <- ts((fit$resid)[-(1:2), ]) 
 list(res=res,order=order)
}
Fit <- FitModel(DiffData)
Hosking(Fit) 
##
## Example 2
library("TSA")
FitModel <- function(data){
    fit <- TSA::tar(y=log(data),p1=4,p2=4,d=3,a=0.1,b=0.9,print=FALSE)
    res <- ts(fit$std.res)
    p1 <- fit$p1
    p2 <- fit$p2
    order <- max(p1, p2)
    parSpec <- list(res=res,order=order)
  parSpec
}
data(prey.eq)
Fit <- FitModel(prey.eq)
Hosking(Fit)

Run the code above in your browser using DataLab