This is a generic function, with specific methods defined for
lm
, plm
, glm
,
gls
, lme
,
robu
, rma.uni
, and
rma.mv
objects.
vcovCR
returns a sandwich estimate of the variance-covariance matrix
of a set of regression coefficient estimates.
vcovCR(obj, cluster, type, target, inverse_var, form, ...)# S3 method for default
vcovCR(
obj,
cluster,
type,
target = NULL,
inverse_var = FALSE,
form = "sandwich",
...
)
An object of class c("vcovCR","clubSandwich")
, which consists
of a matrix of the estimated variance of and covariances between the
regression coefficient estimates. The matrix has several attributes:
indicates which small-sample adjustment was used
contains the factor vector that defines independent clusters
contains the bread matrix
constant used in scaling the sandwich estimator
contains a list of estimating matrices used to calculate the sandwich estimator
contains a list of adjustment matrices used to calculate the sandwich estimator
contains the working variance-covariance model used to calculate the adjustment matrices. This is needed for calculating small-sample corrections for Wald tests.
Fitted model for which to calculate the variance-covariance matrix
Expression or vector indicating which observations belong to the same cluster. For some classes, the cluster will be detected automatically if not specified.
Character string specifying which small-sample adjustment should
be used, with available options "CR0"
, "CR1"
, "CR1p"
,
"CR1S"
, "CR2"
, or "CR3"
. See "Details" section of
vcovCR
for further information.
Optional matrix or vector describing the working
variance-covariance model used to calculate the CR2
and CR4
adjustment matrices. If a vector, the target matrix is assumed to be
diagonal. If not specified, vcovCR
will attempt to infer a value.
Optional logical indicating whether the weights used in
fitting the model are inverse-variance. If not specified, vcovCR
will attempt to infer a value.
Controls the form of the returned matrix. The default
"sandwich"
will return the sandwich variance-covariance matrix.
Alternately, setting form = "meat"
will return only the meat of the
sandwich and setting form = B
, where B
is a matrix of
appropriate dimension, will return the sandwich variance-covariance matrix
calculated using B
as the bread. form = "estfun"
will return the
(appropriately scaled) estimating function, the transposed crossproduct of
which is equal to the sandwich variance-covariance matrix.
Additional arguments available for some classes of objects.
vcovCR
returns a sandwich estimate of the variance-covariance matrix
of a set of regression coefficient estimates.
Several different small sample corrections are available, which run
parallel with the "HC" corrections for heteroskedasticity-consistent
variance estimators, as implemented in vcovHC
. The
"CR2" adjustment is recommended (Pustejovsky & Tipton, 2017; Imbens &
Kolesar, 2016). See Pustejovsky and Tipton (2017) and Cameron and Miller
(2015) for further technical details. Available options include:
is the original form of the sandwich estimator (Liang & Zeger, 1986), which does not make any small-sample correction.
multiplies CR0 by m / (m - 1)
, where m
is the
number of clusters.
multiplies CR0 by m / (m - p)
, where m
is the
number of clusters and p
is the number of covariates.
multiplies CR0 by (m (N-1)) / [(m -
1)(N - p)]
, where m
is the number of clusters, N
is the
total number of observations, and p
is the number of covariates.
Some Stata commands use this correction by default.
is the "bias-reduced linearization" adjustment proposed by Bell and McCaffrey (2002) and further developed in Pustejovsky and Tipton (2017). The adjustment is chosen so that the variance-covariance estimator is exactly unbiased under a user-specified working model.
approximates the leave-one-cluster-out jackknife variance estimator (Bell & McCaffrey, 2002).
Bell, R. M., & McCaffrey, D. F. (2002). Bias reduction in standard errors for linear regression with multi-stage samples. Survey Methodology, 28(2), 169-181.
Cameron, A. C., & Miller, D. L. (2015). A Practitioner's Guide to Cluster-Robust Inference. Journal of Human Resources, 50(2), 317-372. tools:::Rd_expr_doi("10.3368/jhr.50.2.317")
Imbens, G. W., & Kolesar, M. (2016). Robust standard errors in small samples: Some practical advice. Review of Economics and Statistics, 98(4), 701-712. tools:::Rd_expr_doi("10.1162/rest_a_00552")
Liang, K.-Y., & Zeger, S. L. (1986). Longitudinal data analysis using generalized linear models. Biometrika, 73(1), 13-22. tools:::Rd_expr_doi("10.1093/biomet/73.1.13")
Pustejovsky, J. E. & Tipton, E. (2018). Small sample methods for cluster-robust variance estimation and hypothesis testing in fixed effects models. Journal of Business and Economic Statistics, 36(4), 672-683. tools:::Rd_expr_doi("10.1080/07350015.2016.1247004")
vcovCR.lm
, vcovCR.plm
,
vcovCR.glm
, vcovCR.gls
,
vcovCR.lme
, vcovCR.lmerMod
, vcovCR.robu
,
vcovCR.rma.uni
, vcovCR.rma.mv
# simulate design with cluster-dependence
m <- 8
cluster <- factor(rep(LETTERS[1:m], 3 + rpois(m, 5)))
n <- length(cluster)
X <- matrix(rnorm(3 * n), n, 3)
nu <- rnorm(m)[cluster]
e <- rnorm(n)
y <- X %*% c(.4, .3, -.3) + nu + e
dat <- data.frame(y, X, cluster, row = 1:n)
# fit linear model
lm_fit <- lm(y ~ X1 + X2 + X3, data = dat)
vcov(lm_fit)
# cluster-robust variance estimator with CR2 small-sample correction
vcovCR(lm_fit, cluster = dat$cluster, type = "CR2")
# compare small-sample adjustments
CR_types <- paste0("CR",c("0","1","1S","2","3"))
sapply(CR_types, function(type)
sqrt(diag(vcovCR(lm_fit, cluster = dat$cluster, type = type))))
Run the code above in your browser using DataLab