Constructing sandwich covariance matrix estimators by multiplying bread and meat matrices.

sandwich(x, bread. = bread, meat. = meat, ...)



a fitted model object.


either a bread matrix or a function for computing this via bread.(x).


either a bread matrix or a function for computing this via meat.(x, ...).


arguments passed to the meat function.


sandwich is a simple convenience function that takes a bread matrix (i.e., estimator of the expectation of the negative derivative of the estimating functions) and a meat matrix (i.e., estimator of the variance of the estimating functions) and multiplies them to a sandwich with meat between two slices of bread. By default bread and meat are called.

Some theoretical background along with implementation details is introduced in Zeileis (2006) and also used in Zeileis et al. (2020).


A matrix containing the sandwich covariance matrix estimate. Typically, this should be an \(k \times k\) matrix corresponding to \(k\) parameters.

See also


Zeileis A (2006). “Object-Oriented Computation of Sandwich Estimators.” Journal of Statistical Software, 16(9), 1--16. doi:10.18637/jss.v016.i09

Zeileis A, Köll S, Graham N (2020). “Various Versatile Variances: An Object-Oriented Implementation of Clustered Covariances in R.” Journal of Statistical Software, 95(1), 1--36. doi:10.18637/jss.v095.i01


x <- sin(1:10)
y <- rnorm(10)
fm <- lm(y ~ x)

#>             (Intercept)           x
#> (Intercept)  0.09828472 -0.04786662
#> x           -0.04786662  0.13846884
vcovHC(fm, type = "HC")
#>             (Intercept)           x
#> (Intercept)  0.09828472 -0.04786662
#> x           -0.04786662  0.13846884