estimate_QoI
takes a dataframe already prepared with split IDs,
plugin estimates and pseudo-outcomes and calculates the requested
quantities of interest (QoIs).
estimate_QoI(data, ...)
data frame (already prepared with attach_config
, make_splits
,
produce_plugin_estimates
and construct_pseudo_outcomes
)
Unquoted names of moderators to calculate QoIs for.
To see an example analysis, read vignette("experimental_analysis")
in the context
of an experiment, vignette("experimental_analysis")
for an observational study, or
vignette("methodological_details")
for a deeper dive under the hood.
library("dplyr")
if(require("palmerpenguins")) {
data(package = 'palmerpenguins')
penguins$unitid = seq_len(nrow(penguins))
penguins$propensity = rep(0.5, nrow(penguins))
penguins$treatment = rbinom(nrow(penguins), 1, penguins$propensity)
cfg <- basic_config() %>%
add_known_propensity_score("propensity") %>%
add_outcome_model("SL.glm.interaction") %>%
remove_vimp()
attach_config(penguins, cfg) %>%
make_splits(unitid, .num_splits = 4) %>%
produce_plugin_estimates(outcome = body_mass_g, treatment = treatment, species, sex) %>%
construct_pseudo_outcomes(body_mass_g, treatment) %>%
estimate_QoI(species, sex)
}
#> Dropped 11 of 344 rows (3.2%) through listwise deletion.
#>
#> estimating nuisance models [-----------------------------------] splits: 0 / 4
#>
#> estimating nuisance models [========>--------------------------] splits: 1 / 4
#>
#> estimating nuisance models [=================>-----------------] splits: 2 / 4
#>
#> estimating nuisance models [=========================>---------] splits: 3 / 4
#>
#> estimating nuisance models [===================================] splits: 4 / 4
#>
#>
#> Dropped 11 of 344 rows (3.2%) through listwise deletion.
#> Skipping diagnostic on .pseudo_outcome due to lack of model.
#> # A tibble: 11 × 5
#> estimand term level estimate std_error
#> <chr> <chr> <chr> <dbl> <dbl>
#> 1 MSE body_mass_g Control Response 1.21e+5 1.13e+4
#> 2 MSE body_mass_g Treatment Response 7.15e+4 7.79e+3
#> 3 SL risk SL.glm.interaction_All Control Response 1.34e+5 8.04e+3
#> 4 SL risk SL.glm_All Control Response 1.20e+5 5.36e+3
#> 5 SL risk SL.glm.interaction_All Treatment Response 7.25e+4 2.65e+3
#> 6 SL risk SL.glm_All Treatment Response 8.05e+4 2.37e+3
#> 7 SL coefficient SL.glm.interaction_All Control Response 8.30e-2 5.91e-2
#> 8 SL coefficient SL.glm_All Control Response 9.17e-1 5.91e-2
#> 9 SL coefficient SL.glm.interaction_All Treatment Response 8.91e-1 1.55e-2
#> 10 SL coefficient SL.glm_All Treatment Response 1.09e-1 1.55e-2
#> 11 SATE NA NA 6.18e+0 3.41e+1