## Example 1: multinomial bias-reduced model (brglm2) on `airquality`
if (requireNamespace("brglm2", quietly = TRUE)) {
library(brglm2)
# Initial imbalance of means
tapply(airquality$Wind, airquality$Month, mean, na.rm = TRUE)
# Formula definition
formula_air <- Month ~ Wind
# Estimating the generalized propensity scores using brglm2
gp_scores <- estimate_gps(
formula_air,
data = airquality,
method = "brglm2",
reference = "5",
verbose_output = TRUE,
control = brglm2::brglmControl(type = "MPL_Jeffreys")
)
# Filtering the observations outside the csr region
gps_csr <- csregion(gp_scores)
filter_which <- attr(gps_csr, "filter_vector")
filtered_air <- airquality[filter_which, ]
# Imbalance after csr
tapply(filtered_air$Wind, filtered_air$Month, mean, na.rm = TRUE)
# Visual inspection using raincloud
raincloud(
filtered_air,
y = Wind,
group = Month,
significance = "t_test"
)
}
## Example 2: ordered treatment, subset, by, and non-default link
if (requireNamespace("MASS", quietly = TRUE)) {
library(MASS)
# Prepare a clean subset of `airquality`
aq <- subset(
airquality,
!is.na(Month) & !is.na(Wind) & !is.na(Temp)
)
# Grouping variable used in the `by` argument
aq$Temp_group <- ifelse(
aq$Temp > stats::median(aq$Temp, na.rm = TRUE),
"high",
"low"
)
# Explicit order for the (ordinal) treatment variable
ord_month <- sort(unique(aq$Month))
gps_ord <- estimate_gps(
Month ~ Wind + Temp,
data = aq,
method = "polr",
link = "probit",
subset = NULL,
by = "Temp_group",
ordinal_treat = ord_month,
reference = "5"
)
}
Run the code above in your browser using DataLab