if (requireNamespace("carData", quietly = TRUE)) withAutoprint({
data(Duncan, package = "carData")
Duncan$cluster <- sample(LETTERS[1:8], size = nrow(Duncan), replace = TRUE)
Duncan_fit <- lm(prestige ~ 0 + type + income + type:income + type:education, data=Duncan)
# Note that type:income terms are interactions because main effect of income is included
# but type:education terms are separate slopes for each unique level of type
# Test equality of intercepts
Wald_test(Duncan_fit,
constraints = constrain_equal(1:3),
vcov = "CR2", cluster = Duncan$cluster)
# Test equality of type-by-education slopes
Wald_test(Duncan_fit,
constraints = constrain_equal(":education", reg_ex = TRUE),
vcov = "CR2", cluster = Duncan$cluster)
# Pairwise comparisons of type-by-education slopes
Wald_test(Duncan_fit,
constraints = constrain_pairwise(":education", reg_ex = TRUE),
vcov = "CR2", cluster = Duncan$cluster)
# Test type-by-income interactions
Wald_test(Duncan_fit,
constraints = constrain_zero(":income", reg_ex = TRUE),
vcov = "CR2", cluster = Duncan$cluster)
# Pairwise comparisons of type-by-income interactions
Wald_test(Duncan_fit,
constraints = constrain_pairwise(":income", reg_ex = TRUE, with_zero = TRUE),
vcov = "CR2", cluster = Duncan$cluster)
})
Run the code above in your browser using DataLab