| name | alterlab-multilevel-models |
| description | Fits and reports mixed-effects / multilevel / hierarchical models for clustered, nested, longitudinal, and repeated-measures data — random intercepts and slopes, variance components and the ICC, cross-level interactions, and GLMMs (logistic/Poisson) — using statsmodels MixedLM and bambi (Bayesian on PyMC) in Python, or the field-standard R lme4 / glmmTMB / brms via Rscript. It enforces the reporting items reviews find under-reported: full fixed + random specification, centering, variance components + ICC, estimation method, assumption checks, model comparisons, and effect sizes. Use when data are grouped/nested (students in schools, repeated measures, panel/longitudinal) and the question concerns within- vs between-cluster variation. For general single-level regression prefer alterlab-statsmodels; for panel fixed effects used for causal identification prefer alterlab-causal-inference. Part of the AlterLab Academic Skills suite. |
| license | MIT |
| allowed-tools | Read Bash(python:*) |
| compatibility | Requires (declare in-session, no runtime install on Anthropic API): Python statsmodels>=0.14 (MixedLM), optionally bambi>=0.18 (Bayesian, on PyMC) — OR the field-standard R lme4>=2.0 (+ lmerTest for p-values), glmmTMB, brms, and performance (icc/r2) via Rscript. Runs locally via `uv run python` / `Rscript`; no API key. |
| metadata | {"skill-author":"AlterLab","version":"1.0.0","depends_on":"alterlab-statsmodels (single-level regression), alterlab-statistical-analysis, alterlab-causal-inference (panel FE for causal ID); audited by alterlab-ssci-inference-gate"} |
Multilevel Models — Fit the Nesting, Report the Whole Model
Skill type: ANALYSIS MODULE. Correlated data (pupils in schools, repeated measures within
people, panel waves) violate independence; a mixed-effects model partitions variance into levels.
The value here is discipline, not a fit() call: methods reviews document a reporting crisis
— models specified and reported inconsistently — so this skill enforces the reporting standard.
Core Mission
FITTING THE MODEL IS EASY; REPORTING IT COMPLETELY IS THE JOB.
STATE THE FULL FIXED + RANDOM STRUCTURE, THE ICC, THE ESTIMATION, THE CHECKS.
When to Use This Skill
- "I have students nested in schools / repeated measures / panel data — fit a multilevel model."
- "Random intercepts and slopes for [group]; what's the ICC?"
- "Multilevel logistic / Poisson (GLMM)."
- "How much variance is between groups vs within?"
Does NOT Trigger
| The request is really about… | Route to | Why not this skill |
|---|
| Single-level / ordinary regression, no grouping | alterlab-statsmodels / alterlab-statistical-analysis | No random-effects structure needed. |
| Panel fixed effects for causal identification (DiD/within) | alterlab-causal-inference | FE-for-identification, not variance partitioning. |
| Latent variables / SEM / factor structure | alterlab-sem-psychometrics | Measurement model. |
| Whether the design/question even needs multilevel | alterlab-ssci-design-gate | Design routing. |
Structure ≠ question
Having a multilevel data structure is not the same as having a question that requires
multilevel analysis. If inference is at one level and clustering is only a nuisance, cluster-robust
(sandwich) SEs may suffice; reach for a mixed model when the question concerns between-cluster
variation (e.g. how much of the outcome varies across schools, or whether an effect varies by
group). State which case you are in.
Verified calls (pinned)
Python — statsmodels MixedLM:
import statsmodels.formula.api smf
m = smf.mixedlm(, data, groups=data[], re_formula=)
res = m.fit(reml=)
res.summary(); res.cov_re