# ggplotting power curves from the ‘simr’ package

The R package ‘simr’ has greatly facilitated power analysis for mixed-effects models using Monte Carlo simulation (which involves running hundreds or thousands of tests under slight variations of the data). The `powerCurve`

function is used to estimate the statistical power for various sample sizes in one go. Since the tests are run serially, they can take a VERY long time; approximately, the time it takes to run the model supplied once (say, a few hours) *times* the number of simulations (`nsim`

, which should be higher than 200), and *times* the number of different sample sizes examined. While there isn’t a built-in parallel method, the power curves for different sample sizes can be run separately, and the results can be progressively combined as each component finishes running (see tutorial). The power curves produced by `simr`

are so good they deserve ‘ggplot2’ rendering. So, here’s a function for it.

# A usage example

```
library(lme4)
library(simr)
library(ggplot2)
# Toy model with data from 'simr' package
fit = lmer(y ~ x + (x | g), data = simdata)
# Extend sample size of `g`
fit_extended_g = extend(fit, along = 'g', n = 12)
fit_powercurve =
powerCurve(fit_extended_g, fixed('x'),
along = 'g', breaks = c(4, 6, 8, 10, 12),
nsim = 50, seed = 123, progress = FALSE)
# Read in custom function to ggplot results from simr::powerCurve
source('https://raw.githubusercontent.com/pablobernabeu/powercurvePlot/main/powercurvePlot.R')
powercurvePlot(fit_powercurve, number_x_axis_levels = 6) +
# Change some defaults
xlab("Number of levels in 'g'") +
theme(plot.title = element_blank(),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text = element_text(size = 17))
```