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

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

## Arguments

- x
a fitted model object.

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

.

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

.

- ...
arguments passed to the `meat`

function.

## Details

`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).

## Value

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

## References

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

## Examples

```
x <- sin(1:10)
y <- rnorm(10)
fm <- lm(y ~ x)
sandwich(fm)
#> (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
```