`cov_adj()`

takes a fitted covariance model and returns the information
necessary for adjusting direct adjustment model estimates and associated
standard errors for covariates. Standard errors will reflect adjustments made
to the outcomes as well as contributions to sampling variability arising from
the estimates of the covariance adjustment model coefficients.

## Arguments

- model
any model that inherits from a

`glm`

,`lm`

, or`robustbase::lmrob`

object- newdata
a dataframe of new data. Default is NULL, in which case a dataframe is sought from higher up the call stack.

- design
a

`Design`

object. Default is NULL, in which case a`Design`

object is sought from higher up the call stack.- by
optional; a string or named vector of unique identifier columns in the data used to create

`design`

and the data used to fit the covariance adjustment model. Default is NULL, in which case unit of assignment columns are used for identification (even if they do not uniquely identify units of observation). If a named vector is provided, names should represent variables in the data used to create`design`

, while values should represent variables in the covariance adjustment data.

## Value

A `SandwichLayer`

if `design`

is not NULL or a `Design`

object is found in the call stack, otherwise a `PreSandwichLayer`

object

## Details

Prior to generating adjustments, `cov_adj()`

identifies the
treatment variable specified in the `Design`

object passed to
`design`

and replaces all values with a reference level. If the treatment has
logical type, this reference level is `FALSE`

, and if it has numeric type,
this is the smallest non-negative value (which means 0 for 0/1 binary).
Factor treatments are not currently supported for `Design`

objects.

The values of the output vector represent adjustments for the outcomes in
`newdata`

if `newdata`

is provided; adjustments for the outcomes
in the data used to fit a `teeMod`

model if `cov_adj()`

is called within the `offset`

argument of the model fit; or they are
the fitted values from `model`

if no relevant dataframe can be extracted
from the call stack. The length of the output of `cov_adj()`

will match
the number of rows of the dataframe used.

## Examples

```
data(STARdata)
STARdata$treatment <- STARdata$stark == "small"
STARdata$treatment[is.na(STARdata$treatment)] <- FALSE
STARdata$studentid <- as.character(seq_len(nrow(STARdata)))
covariance_y0_read <- lm(readk ~ gender + ethnicity + lunchk +
ladderk + experiencek + tethnicityk,
data = STARdata, subset = !treatment)
STARdata_design <- rct_design(treatment ~ cluster(studentid), data = STARdata)
STARdata_ate <- ate(STARdata_design, data = STARdata)
STARdata_ett <- ett(STARdata_design, data = STARdata)
ett_read <- lm(readk ~ treatment,
offset = cov_adj(covariance_y0_read, newdata = STARdata),
data = STARdata,
weights = STARdata_ett)
#> Warning: Some covariance adjustments are NA; be careful of dropping these observations when fitting the ITT effect model
coef(ett_read)
#> (Intercept) treatmentTRUE
#> -1.079602e-13 5.554179e+00
ate_read <- lm(readk ~ treatment,
offset = cov_adj(covariance_y0_read, newdata = STARdata),
data = STARdata,
weights = STARdata_ate)
#> Warning: Some covariance adjustments are NA; be careful of dropping these observations when fitting the ITT effect model
coef(ate_read)
#> (Intercept) treatmentTRUE
#> -1.022791e-13 5.554179e+00
ate_read_eth <- lm(readk ~ treatment * ethnicity,
offset = cov_adj(covariance_y0_read, newdata = STARdata),
data = STARdata,
weights = STARdata_ate)
#> Warning: Some covariance adjustments are NA; be careful of dropping these observations when fitting the ITT effect model
coef(ate_read_eth)
#> (Intercept) treatmentTRUE
#> -9.603676e-14 5.901494e+00
#> ethnicityafam ethnicityasian
#> -1.612015e-14 1.965411e-14
#> ethnicityhispanic ethnicityamindian
#> 6.700549e-13 1.565857e-15
#> ethnicityother treatmentTRUE:ethnicityafam
#> -6.431281e-14 -1.289929e+00
#> treatmentTRUE:ethnicityasian treatmentTRUE:ethnicityhispanic
#> -2.494972e+01 3.214437e+01
#> treatmentTRUE:ethnicityamindian treatmentTRUE:ethnicityother
#> 1.391799e+01 3.202748e+00
```