An R package for calculating survey/study sample sizes using Cochran’s formula, with optional finite population correction.
Cochran’s formula estimates the minimum sample size needed for a survey to achieve a given margin of error at a given confidence level:
n0 = z^2 * p * (1 - p) / e^2
Where: - z = the z-score for the desired confidence
level (e.g. 1.96 for 95%) - p = estimated proportion of the
population with the attribute of interest (use 0.5 if unknown — this is
the most conservative assumption) - e = desired margin of
error (e.g. 0.05 for ±5%)
If the population size N is known and relatively small,
a finite population correction is applied:
n = n0 / (1 + (n0 - 1) / N)
All three inputs — confidence level, margin of error, and expected proportion — are fully adjustable by the user. The defaults (95% confidence, 5% margin of error, p = 0.5) are just common conventions, not fixed assumptions.
# From a local folder:
devtools::install("path/to/cochranSize")
# Or from GitHub (once pushed):
devtools::install_github("yosleycarrero2025/cochranSize")library(cochranSize)
# Large / unknown population, 95% confidence, 5% margin of error
cochran_sample_size(e = 0.05, conf.level = 0.95)
#> Cochran's Formula - Sample Size Calculation
#> --------------------------------------------
#> Confidence level: 95%
#> Margin of error (e): 0.050
#> Expected proportion (p): 0.500
#>
#> Unadjusted sample size (n0): 385
#> Population size (N): not supplied (treated as infinite)
# Known finite population of 2,000
cochran_sample_size(N = 2000, e = 0.05, conf.level = 0.95)
# Custom expected proportion, 99% confidence
cochran_sample_size(N = 500, p = 0.3, e = 0.03, conf.level = 0.99)You can also call the underlying functions directly:
n0 <- cochran_n(p = 0.5, e = 0.05, conf.level = 0.95)
cochran_n_adj(n0, N = 1000)| Function | Purpose |
|---|---|
cochran_n() |
Base (unadjusted) Cochran sample size |
cochran_n_adj() |
Applies finite population correction to n0 |
cochran_sample_size() |
Convenience wrapper combining both, with nice printing |
devtools::test()MIT