Simulation and power analysis of generalized linear mixed models

Brandon LeBeau

University of Iowa


  1. (G)LMMs
  2. Power
  3. simglm package
  4. Demo Shiny App!

Linear Mixed Model (LMM)


  • Power is the ability to statistically detect a true effect (i.e. non-zero population effect).
  • For simple models (e.g. t-tests, regression) there are closed form equations for generating power.
    • R has routines for these: power.t.test, power.anova.test
    • Gpower3

Power Example

n <- seq(4, 1000, 2)
power <- sapply(seq_along(n), function(i) 
  power.t.test(n = n[i], delta = .15, sd = 1, type = 'two.sample')$power)

Power for (G)LMM

Power is hard

  • In practice, power is hard.
  • Need to make many assumptions on data that has not been collected.
    • Therefore, data assumptions made for power computations will likely differ from collected sample.
  • A power analysis needs to be flexible, exploratory, and well thought out.

simglm Overview

  • simglm aims to simulate (G)LMMs with up to three levels of nesting (aim to add more later).
  • Flexible data generation allows:
    • any number of covariates and discrete covariates
    • change random distribution
    • unbalanced data
    • missing data
    • serial correlation.
  • Also has routines to generate power.

Demo Shiny App

shiny::runGitHub('simglm', username = 'lebebr01', subdir = 'inst/shiny_examples/demo')


  • Must have following packages installed: simglm, shiny, shinydashboard, ggplot2, lme4, DT.