Test of serial correlation for models estimated by GMM
mtest(object, ...)
# S3 method for class 'pgmm'
mtest(object, order = 1L, vcov = NULL, ...)An object of class "htest".
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 (Arellano and Bond 2012)
, p. 32, footnote 7;
As noted by (Arellano and Bond 1991)
(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.
(Arellano and Bond 1991)
(see their footnote 9) used
DPD98 for Gauss ((Arellano and Bond 1998)
) as did
(Windmeijer 2005)
(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.
Arellano M, Bond S (1991).
“Some Tests of Specification for Panel Data : Monte Carlo Evidence and an Application to Employment Equations.”
Review of Economic Studies, 58, 277–297.
Arellano M, Bond S (1998).
“Dynamic panel data estimation using DPD98 for GAUSS: a guide for users.”
unpublished, https://ifs.org.uk/publications/dpd-gauss.
Arellano M, Bond S (2012).
“Panel data estimation using DPD for Ox.”
unpublished, https://www.doornik.com/download/oxmetrics7/Ox_Packages/dpd.pdf.
Windmeijer F (2005).
“A Finite Sample Correction for the Variance of Linear Efficient Two–Steps GMM Estimators.”
Journal of Econometrics, 126, 25–51.
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)
#>
#> Arellano-Bond autocorrelation test of degree 1
#>
#> data: log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), ...
#> normal = -4.1906, p-value = 2.782e-05
#> alternative hypothesis: autocorrelation present
#>
mtest(ab.a1, 2L, vcov = vcovHC)
#>
#> Arellano-Bond autocorrelation test of degree 2, vcov: vcovHC
#>
#> data: log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), ...
#> normal = -0.51603, p-value = 0.6058
#> alternative hypothesis: autocorrelation present
#>
# 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)
#>
#> Arellano-Bond autocorrelation test of degree 1, vcov: vcovHC
#>
#> data: log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + log(capital) + ...
#> normal = -2.4934, p-value = 0.01265
#> alternative hypothesis: autocorrelation present
#>
mtest(ab.b.onestep, 2L, vcov = vcovHC)
#>
#> Arellano-Bond autocorrelation test of degree 2, vcov: vcovHC
#>
#> data: log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + log(capital) + ...
#> normal = -0.35945, p-value = 0.7193
#> alternative hypothesis: autocorrelation present
#>
# 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)
#>
#> Arellano-Bond autocorrelation test of degree 1
#>
#> data: log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), ...
#> normal = -2.9998, p-value = 0.002702
#> alternative hypothesis: autocorrelation present
#>
mtest(ab.a2, 2L) # while a la Arellano/Bond (1991) -0.434
#>
#> Arellano-Bond autocorrelation test of degree 2
#>
#> data: log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + lag(log(capital), ...
#> normal = -0.41575, p-value = 0.6776
#> alternative hypothesis: autocorrelation present
#>