# vcovDC: Double-Clustering Robust Covariance Matrix Estimator In plm: Linear Models for Panel Data

## Description

High-level convenience wrapper for double-clustering robust covariance matrix estimators a la \insertCiteTHOM:11;textualplm and \insertCiteCAME:GELB:MILL:11;textualplm for panel models.

## Usage

 ```1 2 3 4``` ```vcovDC(x, ...) ## S3 method for class 'plm' vcovDC(x, type = c("HC0", "sss", "HC1", "HC2", "HC3", "HC4"), ...) ```

## Arguments

 `x` an object of class `"plm"` or `"pcce"` `...` further arguments `type` the weighting scheme used, one of `"HC0"`, `"sss"`, `"HC1"`, `"HC2"`, `"HC3"`, `"HC4"`, see Details,

## Details

`vcovDC` is a function for estimating a robust covariance matrix of parameters for a panel model with errors clustering along both dimensions. The function is a convenience wrapper simply summing a group- and a time-clustered covariance matrix and subtracting a diagonal one a la White.

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 \insertCiteMACK:WHIT:85;textualplm and \insertCiteCRIB:04;textualplm \insertCite@see @ZEIL:04plm.

The main use of `vcovDC` is to be an argument to other functions, 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). Notice that the `vcov` and `vcov.` arguments allow to supply a function (which is the safest) or a matrix \insertCite@see @ZEIL:04, 4.1-2 and examples belowplm.

## Value

An object of class `"matrix"` containing the estimate of the covariance matrix of coefficients.

Giovanni Millo

## References

\insertRef

CAME:GELB:MILL:11plm

\insertRef

CRIB:04plm

\insertRef

MACK:WHIT:85plm

\insertRef

THOM:11plm

\insertRef

ZEIL:04plm

`sandwich::vcovHC()` from the sandwich package for weighting schemes (`type` argument).
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```library(lmtest) data("Produc", package="plm") zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, model="pooling") ## standard coefficient significance test coeftest(zz) ## DC robust significance test, default coeftest(zz, vcov.=vcovDC) ## idem with parameters, pass vcov as a function argument coeftest(zz, vcov.=function(x) vcovDC(x, type="HC1", maxlag=4)) ## joint restriction test waldtest(zz, update(zz, .~.-log(emp)-unemp), vcov=vcovDC) ## Not run: ## test of hyp.: 2*log(pc)=log(emp) library(car) linearHypothesis(zz, "2*log(pc)=log(emp)", vcov.=vcovDC) ## End(Not run) ```