Compute sample size, power, or minimum detectable effect (MDE) for a
two-sample test of proportions. Leave exactly one of n, power, or
p2 as NULL to solve for that quantity.
Arguments
- p1
Baseline proportion, in (0, 1).
- ...
Additional arguments passed to methods.
- p2
Alternative proportion, in (0, 1). Leave
NULLto solve for the minimum detectable effect (MDE). The solver searches both above and belowp1and returns the alternative closest top1that achieves the target power. Whenp1is near 0 or 1, the MDE may only be detectable in one direction.- n
Per-group sample size. Scalar (equal groups) or length-2 vector
c(n1, n2)for unequal groups. LeaveNULLto solve for sample size.- power
Target power, in (0, 1). Leave
NULLto solve for power.- alpha
Significance level, default 0.05.
- N
Population size for finite-population correction. A scalar applies to both groups; a length-2 vector
c(N1, N2)sets group-specific population sizes.Infdisables FPC for the corresponding group.- deff
Design effect multiplier (> 0). Values < 1 are valid for efficient designs (e.g., stratified sampling with Neyman allocation).
- resp_rate
Expected response rate, in (0, 1]. Default 1 (no adjustment). The sample size is inflated by
1 / resp_rate.- alternative
Character:
"two.sided"(default) or"one.sided".- ratio
Allocation ratio n1/n2 (default 1). Only used when solving for n (
n = NULL). For example,ratio = 2means group 1 gets twice the sample of group 2.- overlap
Panel overlap fraction in [0, 1], for repeated surveys. Defined as the fraction of group 1 that also appears in group 2 (
overlap = n12 / n1). Only supported withmethod = "wald".- rho
Correlation between occasions in [0, 1].
- method
Variance method:
"wald"(default),"arcsine", or"logodds". Arcsine and log-odds transforms are variance-stabilizing and perform better for rare or extreme proportions (Valliant, 2018, §4.3.4–4.3.5).- plan
Optional
svyplan()object providing design defaults.
Value
A svyplan_power object with components:
nPer-group sample size (scalar or length-2 for unequal groups).
powerAchieved power.
effectDifference in proportions (
abs(p2 - p1)).solvedWhich quantity was solved for (
"n","power", or"mde").paramsList of input parameters.
Details
Three methods are available:
"wald"Standard Wald test. Supports panel overlap.
"arcsine"Arcsine-transformed test. The arcsine variance \(1/(4n)\) is approximately constant in \(p\), making it more accurate for rare proportions.
"logodds"Log-odds (logit) test with separate null and alternative variances. Uses Valliant Eq (4.23)/(4.24).
References
Valliant, R., Dever, J. A., & Kreuter, F. (2018). Practical Tools for Designing and Weighting Survey Samples (2nd ed.). Springer. Chapter 4.
Cochran, W. G. (1977). Sampling Techniques (3rd ed.). Wiley.
See also
power_mean() for continuous outcomes, n_prop() for
estimation precision.
Examples
# Sample size to detect a 5pp change from 30%
power_prop(p1 = 0.30, p2 = 0.35)
#> Power analysis for proportions (solved for sample size)
#> n = 1374 (per group), power = 0.800, effect = 0.0500
#> (p1 = 0.300, p2 = 0.350, alpha = 0.05)
# Power given n = 500
power_prop(p1 = 0.30, p2 = 0.35, n = 500, power = NULL)
#> Power analysis for proportions (solved for power)
#> n = 500 (per group), power = 0.394, effect = 0.0500
#> (p1 = 0.300, p2 = 0.350, alpha = 0.05)
# MDE with n = 1000
power_prop(p1 = 0.30, n = 1000)
#> Power analysis for proportions (solved for minimum detectable effect)
#> n = 1000 (per group), power = 0.800, effect = 0.0557
#> (p1 = 0.300, p2 = 0.244, alpha = 0.05)
# Arcsine transform for rare proportions
power_prop(p1 = 0.15, p2 = 0.18, alternative = "one.sided",
method = "arcsine")
#> Power analysis for proportions (solved for sample size)
#> n = 1890 (per group), power = 0.800, effect = 0.0300
#> (p1 = 0.150, p2 = 0.180, alpha = 0.05, one-sided, method = arcsine)
# Log-odds transform
power_prop(p1 = 0.15, p2 = 0.18, alternative = "one.sided",
method = "logodds")
#> Power analysis for proportions (solved for sample size)
#> n = 1889 (per group), power = 0.800, effect = 0.0300
#> (p1 = 0.150, p2 = 0.180, alpha = 0.05, one-sided, method = logodds)
# Allocation ratio 2:1
power_prop(p1 = 0.30, p2 = 0.35, ratio = 2)
#> Power analysis for proportions (solved for sample size)
#> n_treat = 2088, n_control = 1044 (total = 3132), power = 0.800, effect = 0.0500
#> (p1 = 0.300, p2 = 0.350, alpha = 0.05, ratio = 2)