vcovBK {plm} | R Documentation |
Beck and Katz Robust Covariance Matrix Estimators
Description
Unconditional Robust covariance matrix estimators a la Beck and Katz for panel models (a.k.a. Panel Corrected Standard Errors (PCSE)).
Usage
vcovBK(x, ...)
## S3 method for class 'plm'
vcovBK(
x,
type = c("HC0", "HC1", "HC2", "HC3", "HC4"),
cluster = c("group", "time"),
diagonal = FALSE,
...
)
Arguments
x |
an object of class |
... |
further arguments. |
type |
the weighting scheme used, one of |
cluster |
one of |
diagonal |
a logical value specifying whether to force non-diagonal elements to zero, |
Details
vcovBK
is a function for estimating a robust covariance matrix of
parameters for a panel model according to the
Beck and Katz (1995) method, a.k.a. Panel
Corrected Standard Errors (PCSE), which uses an unconditional
estimate of the error covariance across time periods (groups)
inside the standard formula for coefficient
covariance. Observations may be clustered either by "group"
to
account for timewise heteroskedasticity and serial correlation or
by "time"
to account for cross-sectional heteroskedasticity and
correlation. It must be borne in mind that the Beck and Katz
formula is based on N- (T-) asymptotics and will not be appropriate
elsewhere.
The diagonal
logical argument can be used, if set to
TRUE
, to force to zero all non-diagonal elements in the
estimated error covariances; this is appropriate if both serial and
cross–sectional correlation are assumed out, and yields a
timewise- (groupwise-) heteroskedasticity–consistent estimator.
Weighting schemes specified by type
are analogous to those in
sandwich::vcovHC()
in package sandwich and are
justified theoretically (although in the context of the standard
linear model) by MacKinnon and White (1985) and
Cribari–Neto (2004) (see Zeileis 2004).
The main use of vcovBK
(and the other variance-covariance estimators
provided in the package vcovHC
, vcovNW
, vcovDC
, vcovSCC
) is to pass
it to plm's own functions like summary
, pwaldtest
, and phtest
or
together with testing functions from the lmtest
and car
packages. All of
these typically allow passing the vcov
or vcov.
parameter either as a
matrix or as a function, e.g., for Wald–type testing: argument vcov.
to
coeftest()
, argument vcov
to waldtest()
and other methods in the
lmtest package; and argument vcov.
to
linearHypothesis()
in the car package (see the
examples), see (see also Zeileis 2004), 4.1-2, and examples below.
Value
An object of class "matrix"
containing the estimate of
the covariance matrix of coefficients.
Author(s)
Giovanni Millo
References
Beck N, Katz JN (1995). “What to do (and not to do) with time-series cross-section data.” American Political Science Review, 89(03), 634–647.
Cribari–Neto F (2004). “Asymptotic Inference Under Heteroskedasticity of Unknown Form.” Computational Statistics & Data Analysis, 45, 215–233.
Greene WH (2003). Econometric Analysis, 5th edition. Prentice Hall.
MacKinnon JG, White H (1985). “Some Heteroskedasticity–Consistent Covariance Matrix Estimators With Improved Finite Sample Properties.” Journal of Econometrics, 29, 305–325.
Zeileis A (2004). “Econometric Computing With HC and HAC Covariance Matrix Estimators.” Journal of Statistical Software, 11(10), 1–17. https://www.jstatsoft.org/article/view/v011i10.
See Also
sandwich::vcovHC()
from the sandwich
package for weighting schemes (type
argument).
Examples
data("Produc", package="plm")
zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="random")
summary(zz, vcov = vcovBK)
summary(zz, vcov = function(x) vcovBK(x, type="HC1"))
## standard coefficient significance test
library(lmtest)
coeftest(zz)
## robust significance test, cluster by group
## (robust vs. serial correlation), default arguments
coeftest(zz, vcov.=vcovBK)
## idem with parameters, pass vcov as a function argument
coeftest(zz, vcov.=function(x) vcovBK(x, type="HC1"))
## idem, cluster by time period
## (robust vs. cross-sectional correlation)
coeftest(zz, vcov.=function(x) vcovBK(x, type="HC1", cluster="time"))
## idem with parameters, pass vcov as a matrix argument
coeftest(zz, vcov.=vcovBK(zz, type="HC1"))
## joint restriction test
waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovBK)
## Not run:
## test of hyp.: 2*log(pc)=log(emp)
library(car)
linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovBK)
## End(Not run)