1. Basic setup: finite population + sample
- There’s a real, finite population of size $N$: people, cities, students, AA groups, whatever.
- Each unit iii has a value $y_i$ (weekly food spending, candidate preference, “walks to school,” etc.).
- You don’t see all $N$; you only see nnn of them because sampling is cheaper than a census.
- You still want something about the whole population — typically the finite-population mean $yi,\bar y = \frac{1}{N}\sum_{i=1}^N y_i,$ or maybe totals, or proportions.
Bayesian twist: you act as if the whole population values $y_1,\dots,y_N$ were drawn from some superpopulation model $p(y \mid \theta)$, and your sample is just the part you got to see.
2. Simple random sampling (SRS)
Design: pick $n$ units uniformly out of $N$ without replacement.
- Define indicator $I_i = 1$ if unit $i$ was sampled, 0 otherwise.
- Under SRS, $p(I \mid y, \phi) = p(I)$ — it doesn’t depend on the actual $y$’s. That’s exactly the “known and ignorable” case.
- So for Bayesian inference you can ignore the sampling mechanism and just condition on the observed $y$’s.
How to get the finite-population mean in practice:
- Fit a model to the observed data:
- $.p(y \mid \theta), \quad p(\theta)$.
- Draw $\theta^{(s)} \sim p(\theta \mid y_{\text{obs}})$.
- For each draw $\theta^{(s)}$, simulate the missing $N-n$ values independently:
- $y^{(s)}_{\text{mis},i} \sim p(y \mid \theta^{(s)})$
- Combine observed and simulated to get the population mean for that draw:
- $\bar y^{(s)} = \frac{n}{N}\bar y_{\text{obs}} + \frac{N-n}{N}\bar y^{(s)}_{\text{mis}}$
- The collection $\{\bar y^{(s)}\}$ is the posterior for the population mean.
So it’s literally: “fit model → impute unseen units → average.”
3. Why the usual survey formula pops out
If both $n$ and $N$ are big and your model is something mild (say i.i.d. with finite variance), then:
- The average of the unobserved part, $\bar y_{\text{mis}}$, is approximately normal by CLT.
- The posterior for the model mean $\mu$ is close to normal.
- Put that through the algebra, you get $\bar y \mid y_{\text{obs}} \approx N\!\left(\bar y_{\text{obs}}, \left(\frac{1}{n} – \frac{1}{N}\right)s^2_{\text{obs}}\right).$
That’s exactly the classical finite-population variance formula (with the finite-population correction $1 – n/N$). So classical survey theory is a special case of the Bayesian story here.
4. Stratified sampling
Now suppose the population is split into groups (strata), e.g.
- region × urbanicity
- age × sex
- state × race
and within each stratum you do SRS.
Design view: inclusion now depends on a fully observed variable (“which stratum are you?”). So the design is ignorable given the stratum indicator.
Bayesian view:
- Model each stratum separately:
- $y_{ij} \mid \theta_j \sim p(\cdot), \quad j=1,\dots,J$
- Maybe connect the $\theta_j$ with a hierarchical model if some strata are small:
- $\theta_j \sim \text{population of strata}$
- The population mean is $yˉj,\bar y = \sum_{j=1}^J \frac{N_j}{N} \bar y_j,$, and you can simulate each $\bar y_j$ from the model and plug in.
Why stratification matters: if you just pretended it was an SRS of 1,447 people, you’d ignore that some cells are small and noisy. Modeling strata lets you partially pool the small ones and get tighter national estimates.
5. The CBS election poll example — more slowly
What was special?
- 16 strata = 4 regions × 4 phone-density levels.
- In each stratum you see counts for Bush, Dukakis, other/no opinion.
- Outcome per stratum = a 3-category multinomial.
Two modeling choices:
(a) Nonhierarchical
- For stratum $j$:
- $\mathbf{y}_j \mid \boldsymbol{\theta}_j \sim \text{Multinomial}(n_j, \boldsymbol{\theta}_j)$, and
- $\boldsymbol{\theta}_j \sim \text{Dirichlet}(1,1,1)$ independently for $j=1,\dots,16$.
- Then national Bush–Dukakis margin is $\sum_{j=1}^{16} \frac{N_j}{N}(\theta_{1j} – \theta_{2j}).$
- Works, but strata don’t share information.
(b) Hierarchical
They did a clever reparameterization:
- Split into
- “probability you have an opinion”:
- $\alpha_{2j} = 1 – \theta_{3j}$
- “probability you prefer Bush given you have an opinion”:
- $\alpha_{1j} = \frac{\theta_{1j}}{\theta_{1j} + \theta_{2j}}.$
- “probability you have an opinion”:
- Put logits on both:
- $\beta_{1j} = \text{logit}(\alpha_{1j}), \quad \beta_{2j} = \text{logit}(\alpha_{2j}).$
- Model $(\beta_{1j}, \beta_{2j})$ across the 16 strata as i.i.d. bivariate normal with unknown mean, sds, and correlation.
Why bother?
- Some strata have small $n_j$; multinomial counts are noisy.
- Hierarchy pulls extreme strata toward the overall pattern.
- The national margin gets slightly more stable.
They also did a posterior predictive check: take a test statistic like “smallest Bush share across strata,” simulate many replicated datasets from the model, and check whether the observed minimum is inside the simulated range. It was — so no obvious misfit.
6. Cluster sampling
Stratified: “sample inside every group.”
Cluster: “sample some groups, then sample units inside them.”
Example: schools → classes → students.
- First stage: sample schools.
- Second stage: in each sampled school, sample classes or students.
- Design is ignorable if you condition on the things the design used — often the school size or number of classes, because PPS (probability proportional to size) sampling uses that.
Modeling pattern (very common):
- Student-level variability (Binomial/Bernoulli or Normal):
- $y_{ijk} \mid \theta_{jk} \sim \text{Bernoulli}(\theta_{jk}) \quad \text{(student } i, \text{ class } j, \text{ school } k)$
- Class-level variability within a school:
- $\theta_{jk} \mid \theta_k \sim N(\theta_k, \tau^2_{\text{class}})$
- School-level variability:
- $\theta_k \mid \alpha, \beta \sim N(\alpha + \beta M_k, \tau^2_{\text{school}})$
- where $M_k$ = number of classes in school $k$, included because selection used it.
Then to get the city-wide proportion who walk:
- Simulate school means $\bar y_{..k}$ for sampled schools (partially actual data, partially imputed classes).
- Simulate for unsampled schools from the school-level model.
- Weight by school size and average:
- $Y = \frac{1}{N} \sum_{k=1}^K N_k \bar y_{..k}$
If only a tiny fraction of schools was sampled, you can often approximate this by plugging hyperparameters into the top level (that shortcut formula in the text).
7. Unequal-probability sampling (AA survey)
This is where it gets spicy.
- They sampled groups equally.
- But groups have very different sizes (some meetings have 10 people, some 70).
- If you just average across groups, you get the group mean, not the member mean.
- Member mean needs to weight groups by size.
So they model both:
- group size $x_j$
- group response probability $\theta_j$
and then define the population (member-level) mean as
$Y = \frac{\sum_j x_j \theta_j}{\sum_j x_j}$
Because not all groups were sampled, they put a model on $(x_j, \theta_j)$ so they can simulate the unsampled groups too. Even a simple normal–normal setup shows the logic: you must model the part that determined inclusion (here: group size).
8. Where ignorability shows up in all of this
Every time the design used some variable to decide “sample this unit / don’t sample that one,” that variable needs to be in the model. Then:
- if $p(I \mid x, y, \phi) = p(I \mid x)$
- and $\theta$ (data model) is independent of $\phi$ (design model),
- then you can drop the design model and just fit $p(y \mid x, \theta)$ to the observed units.
That’s the survey analogue of missing-at-random.
9. Why do posterior predictive checks matter here?
Because even if the design is ignorable and the model fits the observed data well on average, it might still give dumb answers for the survey estimand (like totals or very low-prevalence rates). So you:
- Pick a test quantity that reflects the estimand (sample total, smallest stratum mean, etc.).
- Simulate replicated datasets under the fitted model with the same design.
- Compare. If the real data look nothing like the replicated ones, the model isn’t capturing the design-induced structure — you need to expand it.
