agentsclimarketplace

Alterlab multilevel models

Skill AlterLab-IEU/AlterLab-Academic-Skills/skills/social-science-workflow/alterlab-multilevel-models

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.From its SKILL.md

Install
npx -y skills add AlterLab-IEU/AlterLab-Academic-Skills --skill alterlab-multilevel-models

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

5.8 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

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 toWhy not this skill
Single-level / ordinary regression, no groupingalterlab-statsmodels / alterlab-statistical-analysisNo random-effects structure needed.
Panel fixed effects for causal identification (DiD/within)alterlab-causal-inferenceFE-for-identification, not variance partitioning.
Latent variables / SEM / factor structurealterlab-sem-psychometricsMeasurement model.
Whether the design/question even needs multilevelalterlab-ssci-design-gateDesign 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 as smf
m = smf.mixedlm("y ~ x", data, groups=data["group"], re_formula="~x")   # random intercept + slope
res = m.fit(reml=True)                    # REML for final variance estimates
res.summary(); res.cov_re                 # fixed effects + random-effect covariance

vc_formula= adds named variance components. Bambi (Bayesian, on PyMC): import bambi as bmb; bmb.Model("y ~ x + (1 + x | group)", data).fit() — lme4-style (1|group) / (x|group) syntax.

R — lme4 / glmmTMB / brms (field standard):

library(lme4); library(lmerTest)          # lmerTest adds Satterthwaite dof + p-values (lme4 omits them)
m <- lmer(y ~ x + (1 + x | group), data)
glmer(y01 ~ x + (1 | group), family = binomial, data = data)     # GLMM
performance::icc(m); performance::r2(m)    # variance-partition ICC + Nakagawa marginal/conditional R2

glmmTMB (zero-inflation, faster) and brms (Bayesian via Stan) share the (1|group) syntax.

Note: statsmodels has no built-in variance-partition ICC — compute it from cov_re and the residual scale (see the reference). pingouin.intraclass_corr computes a reliability ICC (Shrout & Fleiss), which is a different quantity — do not confuse them.

The reporting checklist (the reason this skill exists)

SPECIFICATION:  full fixed-effects + full random-effects structure (which slopes vary by which group)
CENTERING:      predictor centering decision (grand-mean / group-mean / none) + rationale
VARIANCE:       variance components + ICC (proportion of variance between clusters)
ESTIMATION:     ML vs REML (REML for final variance estimates; ML to compare fixed effects)
ASSUMPTIONS:    residual + random-effect normality, homoscedasticity, influential clusters
COMPARISON:     nested-model comparisons (LRT / AIC / BIC), and convergence/singularity checks
EFFECT SIZE:    standardized fixed effects and/or Nakagawa marginal & conditional R2

These are exactly the items methods reviews find under-reported. There is no single correct LMM — surface the modeling decisions as a justified path, don't hardcode one recipe.

References

  • references/mlm_reporting.md — the full reporting standard, ICC/R² computation, centering, convergence, power.

Part of the AlterLab Academic Skills suite.

What ships with it: 2 files

6.8 KB alongside SKILL.md

evals/

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.