Computes partial eta-squared effect sizes for fixed effects in
linear mixed models fitted with the 'lme4' package. Supports crossed,
nested, and mixed (crossed-and-nested) random effects structures with any
number of grouping factors. Mixed designs handle cases where grouping
factors are simultaneously crossed with some variables and nested within
others (e.g., photos nested within models, but both crossed with
participants). Factor predictors are supported directly. Random slope
variances are translated to the
outcome scale using a variance decomposition approach, correctly accounting
for predictor scaling and interaction terms. Both general and operative
effect sizes are provided, with optional parametric bootstrap confidence
intervals. For correlated predictors, per-predictor effect sizes use unique
(semipartial) variance by default. Methods are based on Correll, Mellinger, McClelland, and Judd
(2020)
pecanr computes partial eta-squared (eta2p) effect sizes for fixed
effects in linear mixed models fitted with lme4. It correctly handles
crossed, nested, and mixed (crossed-and-nested) random effects
structures – including random slopes – using a variance decomposition
approach that translates slope variances to the outcome scale.
pecanr accounts for:
You can install the development version of pecanr from GitHub:
# install.packages("pak")
pak::pak("bcohen0901/pecanr")
Once on CRAN:
install.packages("pecanr")
library(lme4)
library(pecanr)
model <- lmer(y ~ condition + (1 | subject) + (1 | item), data = my_data)
eta2p(model, effect = "condition", data = my_data,
design = "crossed",
cross_vars = c("subject", "item"))
model3 <- lmer(y ~ condition + (1 | subject) + (1 | item) + (1 | rater),
data = my_data)
eta2p(model3, effect = "condition", data = my_data,
design = "crossed",
cross_vars = c("subject", "item", "rater"))
model_nested <- lmer(y ~ treatment + (1 | school/class), data = my_data)
eta2p(model_nested, effect = "treatment", data = my_data,
design = "nested",
nest_vars = c("class", "school"))
Use design = "mixed" when some grouping factors are nested within
others but all levels are crossed with additional factors. A common
example is participants viewing multiple photos of each model: photos
are nested within models, but both levels are crossed with participants.
model_mixed <- lmer(y ~ x + (1 | participant) + (1 | model) + (1 | photo:model),
data = my_data)
eta2p(model_mixed, effect = "x", data = my_data,
design = "mixed",
cross_vars = "participant",
nest_vars = c("photo", "model"))
batch_eta2p(model, data = my_data,
design = "crossed",
cross_vars = c("subject", "item"))
eta2p(model, effect = "condition", data = my_data,
design = "crossed",
cross_vars = c("subject", "item"),
operative = TRUE)
Supply a hypothetical coefficient with slope = and eta2p() returns
the effect size it would imply, holding the predictor variance and the
error structure fixed from the model. Printing the result shows just the
estimate; summary() shows the full breakdown (coefficient, var(X),
error components).
eta2p(model, effect = "condition", data = my_data,
design = "crossed",
cross_vars = c("subject", "item"),
slope = 0.03)
res <- eta2p(model, "condition", my_data,
design = "crossed", cross_vars = c("subject", "item"))
summary(res)
Correll, J., Mellinger, C., McClelland, G. H., & Judd, C. M. (2020). Avoid Cohen’s “Small”, “Medium”, and “Large” for Power Analysis. Trends in Cognitive Sciences, 24(3), 200-207.
Correll, J., Mellinger, C., & Pedersen, E. J. (2022). Flexible approaches for estimating partial eta squared in mixed-effects models with crossed random factors. Behavior Research Methods, 54, 1626-1642.
Rights, J. D., & Sterba, S. K. (2019). Quantifying explained variance in multilevel models: An integrative framework for defining R-squared measures. Psychological Methods, 24(3), 309-338.