Nothing
skip_on_cran()
skip_if_not_installed("WeightIt")
skip_if_not_installed("cobalt")
skip_if_not_installed("fwb")
data("lalonde", package = "cobalt")
# Logistic regression ATT weights
w.out <- WeightIt::weightit(
treat ~ age + educ + married + re74,
data = lalonde,
method = "glm",
estimand = "ATT"
)
set.seed(123)
fit3 <- WeightIt::lm_weightit(
re78 ~ treat + age + educ,
data = lalonde,
weightit = w.out,
vcov = "FWB",
R = 50, # should use way more
fwb.args = list(wtype = "mammen")
)
# Multinomial logistic regression outcome model
# that adjusts for estimation of weights
lalonde$re78_3 <- factor(findInterval(lalonde$re78, c(0, 5e3, 1e4)))
fit4 <- WeightIt::multinom_weightit(
re78_3 ~ treat + age + educ,
data = lalonde,
weightit = w.out
)
# Ordinal probit regression that adjusts for estimation
# of weights
fit5 <- WeightIt::ordinal_weightit(
ordered(re78_3) ~ treat + age + educ,
data = lalonde,
link = "probit",
weightit = w.out
)
test_that("model_info", {
expect_true(model_info(fit3)$is_linear)
expect_true(model_info(fit4)$is_multinomial)
expect_true(model_info(fit5)$is_ordinal)
})
test_that("get_residuals", {
expect_equal(
head(get_residuals(fit3)),
head(stats::residuals(fit3)),
tolerance = 1e-3,
ignore_attr = TRUE
)
expect_equal(
head(get_residuals(fit4)),
head(stats::residuals(fit4)),
tolerance = 1e-3,
ignore_attr = TRUE
)
expect_equal(
head(get_residuals(fit5)),
head(stats::residuals(fit5)),
tolerance = 1e-3,
ignore_attr = TRUE
)
})
test_that("get_sigma", {
expect_equal(get_sigma(fit3), 5391.306, tolerance = 1e-2, ignore_attr = TRUE)
expect_equal(get_sigma(fit4), 0.4720903, tolerance = 1e-2, ignore_attr = TRUE)
expect_equal(get_sigma(fit5), 0.4753789, tolerance = 1e-2, ignore_attr = TRUE)
})
test_that("find_predictors", {
expect_identical(find_predictors(fit3), list(conditional = c("treat", "age", "educ")))
expect_null(find_predictors(fit3, effects = "random"))
expect_identical(find_predictors(fit4), list(conditional = c("treat", "age", "educ")))
expect_null(find_predictors(fit4, effects = "random"))
expect_identical(find_predictors(fit5), list(conditional = c("treat", "age", "educ")))
expect_null(find_predictors(fit5, effects = "random"))
})
test_that("find_response", {
expect_identical(find_response(fit3), "re78")
expect_identical(find_response(fit4), "re78_3")
expect_identical(find_response(fit5), "re78_3")
})
test_that("link_inverse", {
expect_equal(link_inverse(fit3)(0.2), 0.2, tolerance = 1e-3)
expect_equal(link_inverse(fit4)(0.2), plogis(0.2), tolerance = 1e-3)
expect_equal(link_inverse(fit5)(0.2), 0.5792597, tolerance = 1e-3) # probit
})
test_that("link_function", {
expect_equal(link_function(fit3)(0.2), 0.2, tolerance = 1e-3)
expect_equal(link_function(fit4)(0.2), qlogis(0.2), tolerance = 1e-3)
expect_equal(link_function(fit5)(0.2), -0.8416212, tolerance = 1e-3) # probit
})
test_that("loglik", {
expect_equal(get_loglikelihood(fit3), -6361.52, tolerance = 1e-2, ignore_attr = TRUE)
})
test_that("get_df", {
expect_equal(get_df(fit3), df.residual(fit3), ignore_attr = TRUE)
expect_equal(get_df(fit4), df.residual(fit4), ignore_attr = TRUE)
expect_equal(get_df(fit5), df.residual(fit5), ignore_attr = TRUE)
expect_equal(get_df(fit3, type = "model"), 5, ignore_attr = TRUE)
expect_equal(get_df(fit4, type = "model"), 4, ignore_attr = TRUE)
expect_equal(get_df(fit5, type = "model"), 5, ignore_attr = TRUE)
})
test_that("get_data", {
expect_equal(nrow(get_data(fit3)), 614, ignore_attr = TRUE)
expect_named(get_data(fit3), c("re78", "treat", "age", "educ"))
expect_equal(nrow(get_data(fit4)), 614, ignore_attr = TRUE)
expect_named(get_data(fit5), c("re78_3", "treat", "age", "educ"))
})
test_that("get_intercept", {
expect_equal(get_intercept(fit3), as.vector(stats::coef(fit3)[1]), ignore_attr = TRUE)
expect_equal(get_intercept(fit4), as.vector(stats::coef(fit4)[c(1, 5)]), ignore_attr = TRUE)
expect_true(is.na(get_intercept(fit5)))
})
test_that("find_formula", {
expect_length(find_formula(fit3), 1)
expect_equal(
find_formula(fit3),
list(conditional = as.formula("re78 ~ treat + age + educ")),
ignore_attr = TRUE
)
expect_equal(
find_formula(fit4),
list(conditional = as.formula("re78_3 ~ treat + age + educ")),
ignore_attr = TRUE
)
expect_equal(
find_formula(fit5),
list(conditional = as.formula("ordered(re78_3) ~ treat + age + educ")),
ignore_attr = TRUE
)
})
test_that("find_terms", {
expect_identical(
find_terms(fit3),
list(
response = "re78",
conditional = c("treat", "age", "educ")
)
)
expect_identical(
find_terms(fit4),
list(
response = "re78_3",
conditional = c("treat", "age", "educ")
)
)
expect_identical(
find_terms(fit5),
list(
response = "ordered(re78_3)",
conditional = c("treat", "age", "educ")
)
)
})
test_that("find_parameters", {
expect_identical(
find_parameters(fit3),
list(conditional = c("(Intercept)", "treat", "age", "educ"))
)
expect_identical(
find_parameters(fit4),
list(conditional = c("(Intercept)", "treat", "age", "educ"))
)
expect_identical(
find_parameters(fit5),
list(conditional = c("treat", "age", "educ", "1|2", "2|3"))
)
expect_identical(nrow(get_parameters(fit3)), 4L)
expect_identical(nrow(get_parameters(fit4)), 8L)
expect_identical(nrow(get_parameters(fit5)), 5L)
})
test_that("is_model", {
expect_true(is_model(fit3))
expect_true(is_model(fit4))
expect_true(is_model(fit5))
})
test_that("get_varcov", {
expect_equal(diag(get_varcov(fit3)), diag(vcov(fit3)), tolerance = 1e-5)
expect_equal(diag(get_varcov(fit4)), diag(vcov(fit4)), tolerance = 1e-5)
expect_equal(diag(get_varcov(fit5)), diag(vcov(fit5)), tolerance = 1e-5)
})
test_that("get_statistic", {
expect_equal(
get_statistic(fit3)$Statistic,
c(0.17184, 1.33867, 0.06674, 3.15887),
tolerance = 1e-3
)
expect_equal(
get_statistic(fit4)$Statistic,
c(0.00271, 0.31156, -2.37521, -0.33413, -4.22954, 0.67165, -0.01399, 3.51396),
tolerance = 1e-3
)
expect_equal(
get_statistic(fit5)$Statistic,
c(0.60512, -0.65645, 2.98951, 2.54289, 4.76061),
tolerance = 1e-3
)
})
test_that("find_statistic", {
expect_identical(find_statistic(fit3), "t-statistic")
expect_identical(find_statistic(fit4), "z-statistic")
expect_identical(find_statistic(fit5), "z-statistic")
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.