Fast survey sampling algorithms for R. All functions return indices for easy subsetting.
library(sondage)
# Use built-in US state data
data(state)
states <- as.data.frame(state.x77)
# Simple random sample: 10 states
idx <- srs(10, nrow(states))
states[idx, ]
# Unequal probability sampling: probability proportional to population
pik <- inclusion_prob(states$Population, n = 10)
idx <- up_maxent(pik)
states[idx, ]
# Batch sampling for simulations (returns n × nrep matrix)
sim_cps <- up_maxent(pik, nrep = 10000)Equal probability:
srs() - Simple random samplingsystematic() - Systematic samplingbernoulli() - Bernoulli samplingUnequal probability:
up_maxent() - Maximum entropy / Conditional Poissonup_brewer() - Brewer’s methodup_systematic() - Systematic PPSup_poisson() - Poisson samplingup_multinomial() - PPS with replacementup_chromy() - PPS with minimum replacementJoint inclusion probabilities :
up_maxent_jip() - Exact CPS joint probabilities (Aires’ formula)up_brewer_jip() - Brewer’s approximation (equation 18)up_systematic_jip() - Exact systematic joint probabilitiesup_poisson_jip() - Independent selections (π_i × π_j)Utilities:
inclusion_prob() - Compute π from measure of size