Computes statistical power, required total sample size, \(\alpha\), or the minimal detectable effect size for a t-test in one of three designs: one-sample, two-sample (independent), or paired/repeated measures.
Arguments
- paired
Logical.
FALSEfor two-sample (independent; default),TRUEfor paired/repeated-measures. Ignored whenonesample = TRUE.- onesample
Logical.
TRUEfor the one-sample t-test; ifTRUE,pairedis ignored.- n_total
Integer scalar. Total sample size. If
NULL, the function solves forn_total.- alpha
Numeric in \((0,1)\). If
NULL, it is solved for given the other inputs.- power
Numeric in \((0,1)\). If
NULL, it is computed; ifn_totalisNULL,n_totalis solved to attain this power.- delta
Numeric. Cohen's \(d\)-type effect size. If negative, it is converted to its absolute value. If
NULL, it is derived fromcohensforpeta2when available. If all three effect-size arguments (delta,cohensf,peta2) areNULL, then the effect size is treated as the unknown quantity and is solved for givenn_total,alpha, andpower. The exact definition depends on the design:One-sample: Cohen's \(d = (\mu - \mu_0)/\sigma\).
Paired: Cohen's \(d_z = (\mu_2 - \mu_1)/\sigma_D\), where \(\sigma_D\) denotes the population standard deviation of the difference scores.
Two-sample (equal allocation): Cohen's \(d = (\mu_2 - \mu_1)/\sigma\), where \(\sigma\) denotes the common population standard deviation.
- cohensf
Numeric (non-negative). Cohen's \(f\). If
NULL, it can be derived fromdelta; ifdeltais supplied,cohensfis ignored. Effect-size relations by design:Two-sample (equal allocation): \(d = 2f\)
Paired: \(d_z = f\)
One-sample: \(f\) and \(\eta_p^2\) are not supported
- peta2
Numeric in \((0,1)\). Partial eta squared. If
NULL, it can be derived fromcohensf; ifdeltais supplied,peta2is ignored. Not defined for one-sample designs.- alternative
Character. Either
"two.sided"or"one.sided".- nlim
Integer vector of length 2. Search range of total
nwhen solving sample size.
Value
A one-row data.frame with class
"cal_power", "cal_n", "cal_alpha", or "cal_es",
depending on the solved quantity. Columns:
df, n_total, alpha, power,
delta, cohensf, peta2,
t_critical, ncp.
Details
The sign of
deltais ignored; its absolute value is used, because statistical power depends on the magnitude of the effect rather than its direction.If multiple effect-size arguments are supplied (
delta,cohensf,peta2), precedence isdelta\(>\)cohensf\(>\)peta2; the rest are ignored with a warning.For the two-sample design, equal allocation is assumed;
n_totalmust be even when provided, and the solvedn_totalwill be an even number.For the paired design, the effect size is interpreted as \(d_z\).
The noncentrality parameter is computed from the design-specific effect size and sample size: \(\lambda = \delta\sqrt{n}\) for one-sample and paired designs, and \(\lambda = \delta\sqrt{n}/2\) for the two-sample equal-allocation design, where \(n\) denotes
n_total.Computations use the central and noncentral t-distributions (
stats::qt,stats::pt); root finding usesstats::uniroot()where needed.Results have been validated to match those produced by G*Power for equivalent one-sample, paired, and two-sample t tests.
For the two-sample designs, Cohen (1988) suggested rough benchmarks of 0.20 (small), 0.50 (medium), and 0.80 (large) for \(d\). These values should be regarded as rough guidelines rather than strict criteria.
References
Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Hillsdale, NJ: Lawrence Erlbaum Associates.
Examples
# (1) Two-sample (independent), compute power given N and d
pwrttest(paired = FALSE, onesample = FALSE, alternative = "two.sided",
n_total = 128, delta = 0.50, alpha = 0.05)
#> df n_total alpha power delta cohensf peta2 t_critical ncp
#> 1 126 128 0.05 0.8014596 0.5 0.25 0.05882353 1.978971 2.828427
#> Power (1 - beta) was calculated based on the total sample size, effect size, and alpha.
# (2) Paired t-test, solve required N for target power
pwrttest(paired = TRUE, onesample = FALSE, alternative = "one.sided",
n_total = NULL, delta = 0.40, alpha = 0.05, power = 0.90)
#> df n_total alpha power delta_z cohensf peta2 t_critical ncp
#> 1 54 55 0.05 0.9004524 0.4 0.4 0.137931 1.673565 2.966479
#> The required total sample size was calculated based on the effect size, alpha, and power.
#> Note: 'power' indicates the achieved power rather than the target power.
# (3) One-sample t-test, solve alpha given N and power
pwrttest(onesample = TRUE, alternative = "two.sided",
n_total = 40, delta = 0.40, alpha = NULL, power = 0.80)
#> df n_total alpha power delta cohensf peta2 t_critical ncp
#> 1 39 40 0.1001708 0.8 0.4 NA NA 1.683997 2.529822
#> Alpha was calculated based on the total sample size, effect size, and power.
# (4) Two-sample, specify effect via f or partial eta^2 (converted internally)
pwrttest(paired = FALSE, cohensf = 0.25, n_total = NULL, alpha = 0.05, power = 0.80)
#> df n_total alpha power delta cohensf peta2 t_critical ncp
#> 1 126 128 0.05 0.8014596 0.5 0.25 0.05882353 1.978971 2.828427
#> The required total sample size was calculated based on the effect size, alpha, and power.
#> Note: 'power' indicates the achieved power rather than the target power.