library(tidyverse)
library(glmmTMB)
library(easystats)Effect Sizes & Reporting
Spring 2026 | CLAS | PSYC 894
Jeffrey M. Girard | Lecture 14a
Unstandardized Effect Sizes
Standardized Effect Sizes
Why can’t we just use a single R² for an MLM?
Rows: 2,000
Columns: 6
$ satisfaction <dbl> -0.30518145, 0.18461383, 1.28090155, 0.35863181, 0.…
$ wait_time <dbl> 0.35091220, -0.53187051, -0.36259725, -1.04860229, …
$ visit_type <chr> "Emergency", "Emergency", "Routine", "Routine", "Em…
$ hospital <chr> "H01", "H01", "H01", "H01", "H01", "H01", "H01", "H…
$ nurse_ratio <dbl> -0.6830383, -0.6830383, -0.6830383, -0.6830383, -0.…
$ hospital_type <chr> "Non-Teaching", "Non-Teaching", "Non-Teaching", "No…
To calculate accurate R-squared values, we do not need to standardize or center our Level-2 predictors. However, we must decompose our Level-1 predictors to properly isolate the within-cluster and between-cluster variance.
Now we fit our model using our unstandardized, centered predictors.
We can extract our Nakagawa R² values cleanly using the {performance} package from the {easystats} ecosystem.
Before we standardize our slopes, we must ask a theoretical question about our outcome variable (Y).
Regardless of using StdX or StdYX, we must be incredibly careful about how we standardize our multilevel predictors (X).
To avoid mixing levels, we create a distinct Level-2 dataset using summarize. Standardizing within this dataset uses the correct means and SDs.
Next, we join those standardized L2 variables back to our L1 data and strictly standardize the within-cluster variance.
# Fixed Effects
Parameter | Coefficient | SE | 95% CI | z | p
----------------------------------------------------------------------
(Intercept) | -6.20e-17 | 0.11 | [-0.21, 0.21] | -5.90e-16 | > .999
wait b z | 0.02 | 0.11 | [-0.19, 0.23] | 0.18 | 0.860
wait w z | -0.37 | 0.03 | [-0.43, -0.31] | -11.90 | < .001
nurse z | 0.19 | 0.14 | [-0.08, 0.47] | 1.41 | 0.158
If Y is an arbitrary scale, you might be tempted to standardize Y globally before fitting your model (like you would for OLS). Do not do this for multilevel data!
There is no automated R package for this (yet). We manually take the coefficients from our StdX model (where X is standardized but Y is raw) and divide them by the level-specific standard deviations of Y.
[1] 0.7003727
[1] 0.7221508
We divide the slopes from our fit_stdx model by the matching SD of Y.
The justification for an MLM should begin before the Methods section.
What to include:
The participants section must describe the sample sizes at all levels.
What to include:
You must explicitly state how every variable was handled.
What to include:
Clearly identify the mathematical tools you used.
What to include:
Explain how you built your equations.
What to include:
You cannot simply present a correlation matrix for a multilevel dataset.
What to include:
Missing data is especially dangerous in MLMs. Deleting one Level-2 cluster due to a missing covariate takes all of its Level-1 observations down with it.
What to include:
Always report the baseline before adding predictors.
What to include:
Report the focal tests of your hypotheses.
What to include:
Do not ignore the random portion of the model.
What to include:
Provide the big picture summary of model performance.
What to include:
Reviewers want to see the sequence of models you estimated.
What to include:
Multilevel modeling uses the word “effect” constantly (e.g., fixed effects, random effects). This can create a semantic trap.
What to watch out for: