powerbrmsINLA provides tools for Bayesian power analysis and
assurance calculations using the statistical frameworks of
brms and
INLA.
It includes simulation-based approaches, support for multiple decision rules (direction, threshold, ROPE, Bayes factors, precision), sequential and two-stage adaptive designs, and a comprehensive suite of visualisation functions.
sequential_design() for
prespecifying a sequential analysis (with an MD5 fingerprint of all
decision-relevant fields for preregistration), sequential_analysis()
for interim monitoring of real accumulating data with an auditable
decision trail, plot_sequential_monitor() for trajectory plots, and
brms_inla_sequential_trial() for simulating a sequential design's
operating characteristics (stopping probabilities, expected sample size,
early-stop exaggeration).brms_inla_power() now raises an error when
effect_name does not match a formula-level fixed-effect term and the
built-in data generator is in use (previously such a name was silently
ignored).decide_sample_size() in conditional mode now requires at least one
decision target, and no longer mistakes the per-cell SD-moment summary
columns for effect-grid columns.brms_inla_power_sequential() summaries, the
column previously named assurance is now conditional_power (the old
name was statistically misleading).brms_inla_power_two_stage() no longer errors when called with
default error_sd / obs_per_group.compute_assurance() — averages
conditional power over a design prior on the effect size (O'Hagan &
Stevens, 2001).assurance_prior_weights() for constructing normalised design-prior
weights (normal, uniform, beta) over an effect grid.decide_sample_size() with both assurance mode (design prior) and
conditional mode for recommending sample sizes from simulation output.validate_inla_vs_brms() for spot-checking INLA posterior estimates
against brms/Stan.brms::prior() syntax.error_sd and group_sd now
accept distributional specifications (halfnormal, lognormal,
uniform) so that power is integrated over variance uncertainty.bf_method = "marglik") alongside
the existing Savage-Dickey method.inla_num_threads = NULL.brms_inla_power, powerbrmsINLA_assurance, and
powerbrmsINLA_sample_size objects.See NEWS.md for the full changelog.
Install from CRAN:
install.packages("powerbrmsINLA")
INLA is listed under Suggests and must be installed separately:
if (!requireNamespace("INLA", quietly = TRUE)) {
install.packages(
"INLA",
repos = c(getOption("repos"),
INLA = "https://inla.r-inla-download.org/R/stable"),
dep = TRUE
)
}
To install the development version from GitHub:
# install.packages("remotes")
remotes::install_github("Tony-Myers/powerbrmsINLA")
library(powerbrmsINLA)
# Step 1: Conditional power simulation
results <- brms_inla_power(
formula = y ~ treatment,
effect_name = "treatment",
effect_grid = c(0.2, 0.5, 0.8),
sample_sizes = c(50, 100),
nsims = 50,
seed = 123
)
results$summary
# Step 2: Unconditional assurance (new in 1.2.0)
assurance <- compute_assurance(
results,
prior_weights = list(dist = "normal", mean = 0.5, sd = 0.2),
metric = "direction"
)
print(assurance)
# Step 3: Sample size recommendation
decide_sample_size(
results,
direction = 0.80,
prior_weights = list(dist = "normal", mean = 0.5, sd = 0.2)
)
For optimal performance:
(1 + time | subject)): Recommend
n >= 50 subjects.If you use powerbrmsINLA in published work, please cite:
Myers, T. (2026). powerbrmsINLA: Bayesian Power Analysis Using 'brms' and 'INLA'. R package version 1.2.0. https://cran.r-project.org/package=powerbrmsINLA
This package is released under the MIT License. See the LICENSE file for details.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.