Partial Eta-Squared for Crossed, Nested, and Mixed Linear Mixed Models

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) , Correll, Mellinger, and Pedersen (2022) , and Rights and Sterba (2019) .


pecanr

CRANstatus

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.

Why pecanr?

pecanr accounts for:

  • Crossed designs – any number of grouping factors (subjects, items, raters, etc.)
  • Nested designs – hierarchical structures with automatic level detection
  • Mixed designs – grouping factors that are simultaneously nested within some variables and crossed with others (e.g., photos nested within models, but both crossed with participants)
  • Random slopes – translated to the outcome scale via sigma^2_slope x sigma^2_X
  • Operative effect sizes – excluding variance components that don’t contribute to the standard error of the tested effect
  • Sensitivity / power analysis – supply a hypothetical slope and read off the effect size it would imply (e.g. alongside simr)

Installation

You can install the development version of pecanr from GitHub:

# install.packages("pak")
pak::pak("bcohen0901/pecanr")

Once on CRAN:

install.packages("pecanr")

Usage

Crossed design (subjects x items)

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"))

Three crossed factors

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"))

Nested design

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"))

Mixed design (nested-and-crossed)

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 over all effects

batch_eta2p(model, data = my_data,
            design     = "crossed",
            cross_vars = c("subject", "item"))

Operative effect sizes

eta2p(model, effect = "condition", data = my_data,
      design     = "crossed",
      cross_vars = c("subject", "item"),
      operative  = TRUE)

Sensitivity analysis (a hypothetical slope)

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)

References

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.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("pecanr")

0.4.0 by Brandon Cohen, 16 days ago


https://github.com/bcohen0901/pecanr


Report a bug at https://github.com/bcohen0901/pecanr/issues


Browse source code at https://github.com/cran/pecanr


Authors: Brandon Cohen [aut, cre] (ORCID: , Joshua Correll [aut, ths] (ORCID:


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports lme4, stats

Suggests spelling, testthat


See at CRAN