skip_on_cran()
skip_if_not_installed("marginaleffects")
skip_if_not_installed("nanoparquet")
skip_on_os("mac")
test_that("estimate_contrasts - ATT and ATU", {
dat <- marginaleffects::get_dataset("lottery")
dat <- subset(dat, win_big == 1 | win == 0)
dat$win_big <- as.factor(dat$win_big)
mod <- lm(
earnings_post_avg ~ win_big * (
tickets + man + work + age + education + college + year +
earnings_pre_1 + earnings_pre_2 + earnings_pre_3),
data = dat
)
out1 <- marginaleffects::avg_predictions(mod, variables = "win_big", by = "win_big")
out2 <- estimate_means(mod, "win_big")
expect_equal(out1$estimate, out2$Mean, tolerance = 1e-4)
# ATE
out1 <- marginaleffects::avg_comparisons(mod, variables = "win_big", newdata = dat)
out2 <- estimate_contrasts(mod, "win_big")
expect_equal(out1$estimate, out2$Difference, tolerance = 1e-4)
# ATT
out1 <- marginaleffects::avg_comparisons(mod, variables = "win_big", newdata = subset(dat, win_big == 1))
out2 <- estimate_contrasts(mod, "win_big", newdata = subset(dat, win_big == 1), estimate = "population")
expect_equal(out1$estimate, out2$Difference, tolerance = 1e-4)
# ATU
out1 <- marginaleffects::avg_comparisons(mod, variables = "win_big", newdata = subset(dat, win_big == 0))
out2 <- estimate_contrasts(mod, "win_big", newdata = subset(dat, win_big == 0), estimate = "population")
expect_equal(out1$estimate, out2$Difference, tolerance = 1e-4)
# error
expect_error(
estimate_contrasts(mod, "win_big", newdata = subset(dat, win_big == 1)),
regex = "It seems that not all"
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.