
Discriminatory accuracy of a binary MAIHDA model
Source:R/discriminatory_accuracy.R
maihda_discriminatory_accuracy.RdBundles the individual-level discriminatory-accuracy summaries for a binomial
MAIHDA model: the AUC / C-statistic (how well the model's predicted
probabilities separate cases from non-cases) and the Median Odds Ratio. Applied
to a strata-only (null) model, the AUC is the discriminatory accuracy of the
intersectional strata themselves – Merlo's central quantity; comparing it with
an adjusted model shows whether individual covariates beyond stratum membership
sharpen classification. The AUC is computed for any binomial link; the Median
Odds Ratio is reported only for the logit link and is NA otherwise (e.g.
for a probit fit), since the MOR is an odds-ratio-scale quantity.
Aggregated-binomial fits are supported on both engines that fit them – an lme4
cbind(success, failure) response and a brms y | trials(n) response:
the AUC is the count-weighted C-statistic over the implied individual-level 0/1
data, and n_case / n_control are the total successes / failures.
Arguments
- model
A
maihda_modelfromfit_maihdafitted with abinomialfamily – including an aggregated response (an lme4cbind(success, failure)or a brmsy | trials(n)) – or thebernoullifamily a binary 0/1 outcome is fit with underengine = "brms".
Value
An object of class maihda_da: a list with auc, mor,
n_case, n_control, family, link and engine.
mor is NA for a non-logit binomial link, where the AUC is still
reported. For an aggregated-binomial fit n_case / n_control are
the total successes / failures.
References
Merlo, J. (2018). Multilevel analysis of individual heterogeneity and discriminatory accuracy (MAIHDA) within an intersectional framework. Social Science & Medicine, 203, 74-80.
Examples
# \donttest{
# Obese (Yes/No) by intersectional strata of Gender x Race
strata <- make_strata(maihda_health_data, vars = c("Gender", "Race"))
d <- maihda_health_data
d$stratum <- strata$data$stratum
m <- fit_maihda(Obese ~ (1 | stratum), data = d, family = "binomial")
#> Binary outcome 'Obese' recoded to 0/1: 'No' = 0 (reference), 'Yes' = 1 (modeled event). Set the factor levels (or supply a 0/1 outcome) to control which level is the event.
maihda_discriminatory_accuracy(m)
#> Discriminatory accuracy (binomial MAIHDA)
#> AUC (C-statistic): 0.571
#> Median Odds Ratio: 1.482
#> Cases / controls: 1077 / 1923
# }