Learn R Programming

plm (version 2.6-5)

mtest: Arellano--Bond Test of Serial Correlation

Description

Test of serial correlation for models estimated by GMM

Usage

mtest(object, ...)

# S3 method for pgmm mtest(object, order = 1L, vcov = NULL, ...)

Value

An object of class "htest".

Arguments

object

an object of class "pgmm",

...

further arguments (currently unused).

order

integer: the order of the serial correlation,

vcov

a matrix of covariance for the coefficients or a function to compute it,

Author

Yves Croissant

Details

The Arellano--Bond test is a test of correlation based on the residuals of the estimation. By default, the computation is done with the standard covariance matrix of the coefficients. A robust estimator of a covariance matrix can be supplied with the vcov argument.

Note that mtest computes like DPD for Ox and xtabond do, i.e., uses for two-steps models the one-step model's residuals which were used to construct the efficient two-steps estimator, see DOOR:AREL:BOND:12plm, p. 32, footnote 7; As noted by AREL:BOND:91plm (p. 282), the m statistic is rather flexible and can be defined with any consistent GMM estimator which gives leeway for implementation, but the test's asymptotic power depends on the estimator's efficiency. AREL:BOND:91plm (see their footnote 9) used DPD98 for Gauss (AREL:BOND:98plm) as did WIND:05plm (see footnote 10) for the basis of his covariance correction, both with a slightly different implementation. Hence some results for mtest with two-step models diverge from original papers, see examples below.

References

See Also

pgmm(), vcovHC.pgmm()

Examples

Run this code
data("EmplUK", package = "plm")
# Arellano/Bond 1991, Table 4, column (a1)
ab.a1 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1)
              + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99),
              data = EmplUK, effect = "twoways", model = "onestep")
mtest(ab.a1, 1L)
mtest(ab.a1, 2L, vcov = vcovHC)

# Windmeijer (2005), table 2, onestep with corrected std. err
ab.b.onestep <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1)
                     + log(capital) + lag(log(output), 0:1) | lag(log(emp), 2:99),
                     data = EmplUK, effect = "twoways", model = "onestep")
mtest(ab.b.onestep, 1L, vcov = vcovHC)
mtest(ab.b.onestep, 2L, vcov = vcovHC)

# Arellano/Bond 1991, Table 4, column (a2)
ab.a2 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1)
             + lag(log(capital), 0:2) + lag(log(output), 0:2) | lag(log(emp), 2:99),
             data = EmplUK, effect = "twoways", model = "twosteps")
mtest(ab.a2, 1L)
mtest(ab.a2, 2L) # while a la Arellano/Bond (1991) -0.434

Run the code above in your browser using DataLab