Skip to contents

Returns the variance-covariance, as retrieved by stats::vcov(), but works for more model objects that probably don't provide a vcov()-method.

Usage

get_varcov(x, ...)

# S3 method for default
get_varcov(x, verbose = TRUE, vcov = NULL, vcov_args = NULL, ...)

# S3 method for betareg
get_varcov(
  x,
  component = c("conditional", "precision", "all"),
  verbose = TRUE,
  ...
)

# S3 method for clm2
get_varcov(x, component = c("all", "conditional", "scale"), ...)

# S3 method for truncreg
get_varcov(x, component = c("conditional", "all"), verbose = TRUE, ...)

# S3 method for hurdle
get_varcov(
  x,
  component = c("conditional", "zero_inflated", "zi", "all"),
  vcov = NULL,
  vcov_args = NULL,
  verbose = TRUE,
  ...
)

# S3 method for glmmTMB
get_varcov(
  x,
  component = c("conditional", "zero_inflated", "zi", "dispersion", "all"),
  verbose = TRUE,
  ...
)

# S3 method for MixMod
get_varcov(
  x,
  effects = c("fixed", "random"),
  component = c("conditional", "zero_inflated", "zi", "dispersion", "auxiliary", "all"),
  verbose = TRUE,
  ...
)

# S3 method for brmsfit
get_varcov(x, component = "conditional", verbose = TRUE, ...)

# S3 method for betamfx
get_varcov(
  x,
  component = c("conditional", "precision", "all"),
  verbose = TRUE,
  ...
)

# S3 method for aov
get_varcov(x, complete = FALSE, verbose = TRUE, ...)

# S3 method for mixor
get_varcov(x, effects = c("all", "fixed", "random"), verbose = TRUE, ...)

Arguments

x

A model.

...

Currently not used.

verbose

Toggle warnings.

vcov

Variance-covariance matrix used to compute uncertainty estimates (e.g., for robust standard errors). This argument accepts a covariance matrix, a function which returns a covariance matrix, or a string which identifies the function to be used to compute the covariance matrix.

  • A covariance matrix

  • A function which returns a covariance matrix (e.g., stats::vcov())

  • A string which indicates the kind of uncertainty estimates to return.

    • Heteroskedasticity-consistent: "vcovHC", "HC", "HC0", "HC1", "HC2", "HC3", "HC4", "HC4m", "HC5". See ?sandwich::vcovHC

    • Cluster-robust: "vcovCR", "CR0", "CR1", "CR1p", "CR1S", "CR2", "CR3". See ?clubSandwich::vcovCR()

    • Bootstrap: "vcovBS", "xy", "residual", "wild", "mammen", "webb". See ?sandwich::vcovBS

    • Other sandwich package functions: "vcovHAC", "vcovPC", "vcovCL", "vcovPL".

vcov_args

List of arguments to be passed to the function identified by the vcov argument. This function is typically supplied by the sandwich or clubSandwich packages. Please refer to their documentation (e.g., ?sandwich::vcovHAC) to see the list of available arguments. If no estimation type (argument type) is given, the default type for "HC" (or "vcovHC") equals the default from the sandwich package; for type "CR" (or "vcoCR"), the default is set to "CR3".

component

Should the complete variance-covariance matrix of the model be returned, or only for specific model components only (like count or zero-inflated model parts)? Applies to models with zero-inflated component, or models with precision (e.g. betareg) component. component may be one of "conditional", "zi", "zero-inflated", "dispersion", "precision", or "all". May be abbreviated. Note that the conditional component is also called count or mean component, depending on the model.

effects

Should the complete variance-covariance matrix of the model be returned, or only for specific model parameters only? Currently only applies to models of class mixor.

complete

Logical, if TRUE, for aov, returns the full variance-covariance matrix.

Value

The variance-covariance matrix, as matrix-object.

Note

get_varcov() tries to return the nearest positive definite matrix in case of negative eigenvalues of the variance-covariance matrix. This ensures that it is still possible, for instance, to calculate standard errors of model parameters. A message is shown when the matrix is negative definite and a corrected matrix is returned.

Examples

data(mtcars)
m <- lm(mpg ~ wt + cyl + vs, data = mtcars)
get_varcov(m)
#>             (Intercept)         wt        cyl         vs
#> (Intercept)   11.552774  0.1680680 -1.5843752 -4.7487893
#> wt             0.168068  0.6207461 -0.3301421 -0.2797924
#> cyl           -1.584375 -0.3301421  0.3764045  0.7257641
#> vs            -4.748789 -0.2797924  0.7257641  2.6475113

# vcov of zero-inflation component from hurdle-model
if (require("pscl")) {
  data("bioChemists", package = "pscl")
  mod <- hurdle(art ~ phd + fem | ment, data = bioChemists, dist = "negbin")
  get_varcov(mod, component = "zero_inflated")
}
#>               (Intercept)          ment
#> (Intercept)  0.0115917010 -0.0009744732
#> ment        -0.0009744732  0.0001561139

# robust vcov of, count component from hurdle-model
if (require("pscl") && require("sandwich")) {
  data("bioChemists", package = "pscl")
  mod <- hurdle(art ~ phd + fem | ment, data = bioChemists, dist = "negbin")
  get_varcov(
    mod,
    component = "conditional",
    vcov = "BS",
    vcov_args = list(R = 50)
  )
}
#> Loading required package: sandwich
#>                   count_(Intercept)     count_phd count_femWomen
#> count_(Intercept)       0.041085655 -0.0099974249  -0.0025580524
#> count_phd              -0.009997425  0.0030690981   0.0002363378
#> count_femWomen         -0.002558052  0.0002363378   0.0120230943