skip_if_not_installed("sandwich")
skip_if_not_installed("clubSandwich")
test_that("informative error in get_varcov.default", {
skip_if_not_installed("lme4")
mod <- lme4::lmer(mpg ~ hp + (1 | cyl), data = mtcars)
# sandwich: not supported
expect_error(get_varcov(mod, vcov = "HC2"))
# clubSandwich: supported
expect_equal(get_varcov(mod, vcov = "CR0"),
clubSandwich::vcovCR(mod, type = "CR0"),
tolerance = 1e-4,
ignore_attr = TRUE
)
})
test_that("lm: sandwich", {
mod <- lm(mpg ~ hp * wt, data = mtcars)
expect_equal(
get_varcov(mod, vcov = "HC1"),
sandwich::vcovHC(mod, type = "HC1"),
ignore_attr = TRUE
)
expect_equal(
get_varcov(mod, vcov = "HC4"),
sandwich::vcovHC(mod, type = "HC4"),
ignore_attr = TRUE
)
expect_equal(
get_varcov(mod, vcov = "HC", vcov_args = list(type = "HC4")),
sandwich::vcovHC(mod, type = "HC4"),
ignore_attr = TRUE
)
expect_equal(get_varcov(mod, vcov = sandwich::vcovOPG),
sandwich::vcovOPG(mod),
tolerance = 1e-5
)
})
test_that("lm: clubSandwich", {
mod <- lm(mpg ~ hp * wt, data = mtcars)
expect_equal(
get_varcov(mod,
vcov = "CR",
vcov_args = list(cluster = mtcars$cyl, type = "CR0")
),
clubSandwich::vcovCR(mod, cluster = mtcars$cyl, type = "CR0"),
tolerance = 1e-5,
ignore_attr = TRUE
)
})
test_that("mlm: sandwich", {
mod <- lm(cbind(cyl, disp, hp) ~ drat, data = mtcars)
v1 <- get_varcov(mod, vcov = "HC3")
v2 <- sandwich::vcovHC(mod)
expect_equal(v1, v2, tolerance = 1e-4, ignore_attr = TRUE)
})
test_that("warning: not yet supported", {
skip_if_not_installed("pscl")
data("bioChemists", package = "pscl")
mod <- pscl::hurdle(art ~ phd + fem | ment, data = bioChemists, dist = "negbin")
expect_error(get_varcov(mod, vcov = "HC3"), regexp = "supported by one or")
})
test_that("verbose and deprecated arguments", {
mod <- lm(mpg ~ hp, data = mtcars)
v1 <- suppressWarnings(get_varcov(mod, robust = TRUE))
v2 <- suppressWarnings(get_varcov(mod, robust = TRUE))
expect_equal(v1, v2, tolerance = 1e-4, ignore_attr = TRUE)
expect_warning(get_varcov(mod, robust = TRUE), regexp = "deprecated")
expect_warning(get_varcov(mod, robust = TRUE, verbose = FALSE), NA)
})
test_that("error: ill-defined model", {
dd <- data.frame(y = as.difftime(0:5, units = "days"))
m1 <- lm(y ~ 1, data = dd)
expect_error(get_varcov(m1), regex = "Can't extract variance-covariance")
})
test_that("error: bad string", {
m <- lm(mpg ~ hp + factor(carb), data = mtcars)
expect_error(get_varcov(m, vcov = "bootstrap"), regexp = "not a recognized")
})
test_that("error: from vcov", {
data(iris)
mod <- lm(Sepal.Width ~ Sepal.Length, data = iris)
expect_error(
get_varcov(mod, vcov = "vcovBS", vcov_args = list(cluster = "Species")),
regex = "number of observations"
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.