Sample Size Determination — How Many Observations Do You Need?
Foundations of Statistics
Planning for Statistical Success
Sample size determination ensures studies have adequate power to detect meaningful effects while avoiding unnecessary data collection. It balances statistical requirements against practical constraints like time, cost, and ethics.
- Clinical Trials — Ensuring sufficient power to detect clinically meaningful treatment effects
- Market Research — Optimizing survey costs while maintaining estimate precision
- Quality Assurance — Determining inspection sample sizes for reliable defect detection
The right sample size is the foundation of trustworthy statistical conclusions.
What Is Sample Size Determination?
DfSample Size Determination
Sample size determination is the process of calculating the number of observations needed to achieve a desired level of precision and power in a statistical study. Too few observations leads to inconclusive results; too many wastes resources.
Core Formulas
Sample Size for Estimating a Mean
Here,
- =Required sample size
- =Critical z-value for the desired confidence level
- =Population standard deviation (estimated)
- =Desired margin of error
Sample Size for Estimating a Proportion
Here,
- =Estimated population proportion
- =Desired margin of error
Conservative Estimate for p
When is unknown, use for the most conservative (largest) sample size, since is maximized at with value .
Derivation: Inverting the Margin of Error
ThSample Size from Margin of Error
Starting from the margin of error formula , solve for :
Since must be an integer, always round up to the next whole number: .
Proof sketch: The margin of error is the half-width of the CI. Setting to the desired precision and solving for gives the minimum sample size that achieves that precision. Rounding up ensures the actual margin is at most .
Sample Size for Hypothesis Testing (Power Analysis)
Sample Size for Two-Sided Test
Here,
- =Significance level (Type I error rate)
- =Type II error rate; power $= 1 - \beta$
- =Population standard deviation
- =Minimum detectable effect size
ThPower and Sample Size Trade-off
For a fixed effect size and significance level , the required sample size scales as:
This reveals two critical insights:
- Detecting smaller effects requires more data: halving requires the sample.
- More variable populations require more data: doubling requires the sample.
Worked Example: Clinical Trial Design
A pharmaceutical company wants to detect a 3 mmHg reduction in blood pressure with 80% power at . Prior studies suggest mmHg.
Step 1: Identify parameters: , , (), power (, ).
Step 2: Compute:
Step 3: Round up: per group, total .
Accounting for Attrition
In practice, inflate the required by the expected dropout rate : . For a 15% dropout rate: per group.
The Effect Size Pyramid
Sample Size Dependencies
The required sample size depends on four quantities:
| Factor | Effect on | Example |
|---|---|---|
| Effect size | Halving effect sample | |
| Standard deviation | Doubling variance sample | |
| Power | 80% to 90% power sample | |
| Significance | to sample |
Python Implementation
import numpy as np
from scipy import stats
def sample_size_mean(sigma, E, alpha=0.05):
"""Sample size for estimating a mean with margin of error E."""
z = stats.norm.ppf(1 - alpha / 2)
return int(np.ceil((z * sigma / E) ** 2))
def sample_size_proportion(p, E, alpha=0.05):
"""Sample size for estimating a proportion with margin of error E."""
z = stats.norm.ppf(1 - alpha / 2)
return int(np.ceil(z**2 * p * (1 - p) / E**2))
def sample_size_two_sample(delta, sigma, alpha=0.05, power=0.80):
"""Sample size per group for two-sample t-test."""
z_alpha = stats.norm.ppf(1 - alpha / 2)
z_beta = stats.norm.ppf(power)
return int(np.ceil(2 * sigma**2 * (z_alpha + z_beta)**2 / delta**2))
# Example 1: Mean estimation
print(f"n for σ=10, E=2, 95% CI: {sample_size_mean(10, 2, 0.05)}")
print(f"n for σ=10, E=1, 95% CI: {sample_size_mean(10, 1, 0.05)}")
# Example 2: Proportion estimation
print(f"n for p=0.5, E=0.03, 95% CI: {sample_size_proportion(0.5, 0.03)}")
print(f"n for p=0.2, E=0.03, 95% CI: {sample_size_proportion(0.2, 0.03)}")
# Example 3: Two-sample test
print(f"n per group for δ=3, σ=8, 80% power: {sample_size_two_sample(3, 8, 0.05, 0.80)}")
print(f"n per group for δ=2, σ=8, 80% power: {sample_size_two_sample(2, 8, 0.05, 0.80)}")
Key Takeaways
Summary: Sample Size Determination
- For precision: — round up
- For power: — per group
- The relationship means detecting small effects is expensive
- Always estimate from prior studies or pilot data before computing
- Account for attrition, clustering, and multiple comparisons in your final