cochranSize

An R package for calculating survey/study sample sizes using Cochran’s formula, with optional finite population correction.

What is Cochran’s formula?

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.

Installation

# From a local folder:
devtools::install("path/to/cochranSize")

# Or from GitHub (once pushed):
devtools::install_github("yosleycarrero2025/cochranSize")

Usage

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)

Functions

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

Testing

devtools::test()

License

MIT