
Why correlation ≠ causation — potential outcomes & confounding
2026-07-23
state a causal hypothesis as a counterfactual comparison — the potential-outcomes framework;
explain why a naïve comparison of two groups is usually not the causal effect — selection bias;
read a DAG — spot a confounder on a backdoor path — and use a balance test to expose it.
One part per goal. Our running question: does consuming news make immigrant minorities report more discrimination?
Part 1 of 3
Every causal claim is secretly a comparison — of what happened against what would have happened.
The integration paradox: immigrants and their descendants who are better integrated — more educated, longer resident — often report more discrimination, not less Schaeffer and Kas (2024).
One proposed mechanism: the better integrated consume more news, become more aware of discrimination, and so report it more often.
Research question: does consuming news increase how often immigrant minorities report discrimination?

280 estimates from 42 studies; overall ≈ +0.022. Source: Schaeffer and Kas (2024)
A causal claim implies a counterfactual: things would have been different had \(X\) (not) happened.
\(H_1:\) news consumption increases how often minorities report discrimination:
\[0 < \text{Avg}_n[\text{Discr.} \mid \text{news} = 1] - \text{Avg}_n[\text{Discr.} \mid \text{news} = 0]\]
\(H_0:\) news consumption does not change it: the difference of the two group averages is \(\leq 0\).
Discuss: what comparison is implied by each classic claim? Marx — capitalist labour alienates people and reduces mental health. Simmel — city life increases nervous stimulation and makes residents distant.
The obvious “study”: ask people “How does reading the news affect you?”
Discuss: why is simply asking a bad way to test our hypothesis?
People have inaccurate perceptions of what shapes them — social desirability, faulty memory, little self-insight. Statements by research subjects are valuable, but they are not credible causal evidence. We need a comparison, not an introspection.
Schaeffer, Kas, and Hagedorn (2023) — 1,093 immigrants and children of immigrants in Berlin, Hamburg, Munich, Frankfurt & Cologne, interviewed August 2021.
“On a typical day, about how much time do you spend watching, reading, or listening to news about politics and current affairs?” (hours + minutes)
“How often were you personally discriminated …” — when looking for work, at work, in education, looking for housing, with officials, out in public. (1) Never … (5) Very often — averaged into one index.
# APAD ships as a local file (download it from Absalon into your project folder)
load("../assets/APAD.RData")
APAD <- APAD %>%
mutate(
news = news_hrs * 60 + news_mins, # total daily minutes
news_yn = if_else(news >= 15, 1, 0), # reads news? (>= 15 min)
dis_index = rowMeans( # average across the 6 domains
select(., dis_trainee, dis_job, dis_school,
dis_house, dis_gov, dis_public),
na.rm = TRUE
)
)
| Discrimination | |
|---|---|
| (Intercept) | 2.187*** |
| (0.116) | |
| Reads news | −0.093 |
| (0.129) | |
| Num.Obs. | 1085 |
| R2 | 0.002 |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
News readers report, if anything, 0.09 points less discrimination — and the difference is not significant (\(t \approx -0.7\)). Taken at face value, \(H_1\) looks wrong. But is this a fair comparison?
You run the naïve analysis yourself — on a different outcome: support for an anti-discrimination law.
Open exercise 1 in a new tab ↗
Part 2 of 3
To see why the comparison can mislead, we need the language of potential outcomes.
For Ferda, two potential outcomes — one for each version of her life:
\[\text{effect}_{\text{Ferda}} = Y_{1,\text{Ferda}} - Y_{0,\text{Ferda}}\]
| Ferda | |
|---|---|
| \(Y_0\): discrimination without news | 2 (rarely) |
| \(Y_1\): discrimination with news | 4 (often) |
| Personal causal effect | +2 |
The fundamental problem of causal inference: we only ever see one of Ferda’s two futures. The other potential outcome is always missing — so a personal causal effect can never be observed directly.

\[\text{Avg}_n[Y_{1i} - Y_{0i}] = \frac{1}{n}\sum_{i=1}^{n} Y_{1i} - \frac{1}{n}\sum_{i=1}^{n} Y_{0i}\]
The average causal effect is just the average of everyone’s personal causal effects.
It compares two whole worlds: one where everyone reads the news, against one where no one does. Neither world is ever fully observed — but, under the right conditions, we can estimate the average.
We can’t see Ferda’s missing future — so what if we compare her to Tuki, who doesn’t read news?
| Ferda | Tuki | |
|---|---|---|
| \(Y_0\): without news | 2 | 5 |
| \(Y_1\): with news | 4 | 5 |
| true effect | +2 | 0 |
Grey = the counterfactual we never see.
\[\underbrace{Y_{1,\text{Ferda}}}_{4} - \underbrace{Y_{0,\text{Tuki}}}_{5} = -1\]
Discuss: Ferda’s true effect is \(+2\), yet comparing her to Tuki gives \(-1\). Why is comparing different people so misleading here?
\[\underbrace{Y_{1,\text{Ferda}}}_{4} - \underbrace{Y_{0,\text{Tuki}}}_{5} = \underbrace{Y_{1,\text{Ferda}} - Y_{0,\text{Ferda}}}_{\text{true effect: }4-2 = +2} + \underbrace{Y_{0,\text{Ferda}} - Y_{0,\text{Tuki}}}_{\text{selection bias: }2-5 = -3}\]
Selection bias \(= Y_{0,\text{Ferda}} - Y_{0,\text{Tuki}} \neq 0\): the two people differ at baseline. Even with no news at all, Tuki would report more discrimination than Ferda. That pre-existing gap contaminates the comparison.
\[\underbrace{\text{Avg}_n[Y_{1i} \mid D_i = 1] - \text{Avg}_n[Y_{0i} \mid D_i = 0]}_{\text{difference in observed group means}} = \underbrace{\text{effect on the treated}}_{\text{what we want}} + \underbrace{\text{selection bias}}_{\text{what contaminates it}}\]
\[\text{Selection bias} = \underbrace{\text{Avg}_n[Y_{0i} \mid D_i = 1]}_{\text{unobserved!}} - \text{Avg}_n[Y_{0i} \mid D_i = 0]\] the gap in the outcome’s baseline (\(Y_0\)) between the groups we compare.
Think: if the minorities who read the news had not read them, would they report discrimination as often as those who never read news? If not — the comparison is biased.
We can never see the unobserved baseline \(Y_0\). But if the two groups differ on things we can measure — age, citizenship, generation — that is a strong hint they differ on \(Y_0\) too.
A balance test compares the groups on those background variables.
0
|
1
|
||||||
|---|---|---|---|---|---|---|---|
| Mean | Std. Dev. | Mean | Std. Dev. | Diff. in Means | Std. Error | ||
| age | 36.7 | 12.3 | 43.8 | 15.4 | 7.1 | 2.2 | |
| nbh_exposed | 4.2 | 0.8 | 4.2 | 1.0 | −0.0 | 0.1 | |
| N | Pct. | N | Pct. | ||||
| german | Ja | 89 | 40.8 | 561 | 64.1 | ||
| Nein | 129 | 59.2 | 314 | 35.9 | |||
| imor | Child of immigrant | 64 | 29.4 | 399 | 45.6 | ||
| Immigrant | 154 | 70.6 | 476 | 54.4 | |||
The groups are not balanced — news readers are markedly older (≈ 44 vs. 37) and more often German citizens. Our naïve comparison is confounded — and these are only the observed differences.
Part 3 of 3
A directed acyclic graph draws our causal assumptions — and makes the source of the bias visible.

The red dashed arrow is not really part of the DAG — it just marks the spurious \(D\)–\(Y\) correlation that the backdoor path through \(C\) produces.
Plausibly, German citizenship shapes both whether people follow German news and how much discrimination they encounter.
It opens a backdoor path — so the raw news–discrimination correlation is (at least partly) spurious, exactly the selection bias the balance table revealed.


Correlation ≠ causation. The baseline \(Y_0\) differs between the groups we compare, because confounders sort people into and out of reading the news.
Ice-cream sales and shark attacks correlate — but temperature drives both. A raw correlation is a starting point, never a conclusion. The rest of this course is about earning the causal reading.
You draw the DAG and run a balance test yourself — is racial appearance balanced across news readers?
Open exercise 2 in a new tab ↗
A causal claim is a counterfactual claim — it compares an outcome with a treatment to the same outcome without it.
Potential outcomes (\(Y_0\), \(Y_1\)) make this precise; a personal causal effect is \(Y_1 - Y_0\). The fundamental problem: one of them is always missing.
The average causal effect is the average of those personal effects.
A naïve comparison of groups usually is not the causal effect — it adds selection bias: the groups differ in their baseline \(Y_0\).
A balance test exposes observed imbalance; a DAG shows why — a confounder on a backdoor path. Confounder bias is selection bias.
Shaky on any of these? That is what this week’s Absalon quiz and the Friday exercise class are for.
rowMeans(select(., ...)): average several items into one index (same units).estimatr::lm_robust(y ~ d, weights = ...): weighted OLS with robust standard errors.modelsummary::datasummary_balance(~ group, data = ...): a balance table across two groups (rename your weight column to weights).Breen, R. (2022). “Causal inference with observational data”. In: Handbook of Sociological Science: Contributions to Rigorous Sociology. Ed. by K. Gërxhani, N. de Graaf and W. Raub. Edward Elgar Publishing, pp. 272-286.
Pearl, J., M. Glymour, and N. P. Jewell (2016). Causal Inference in Statistics - A Primer. 1.th ed. Chichester, West Sussex: Wiley.
Schaeffer, M. and J. Kas (2024). “The integration paradox: Does awareness of the extent of ethno-racial discrimination increase reports of discrimination?” In: Political Psychology.
Schaeffer, M., J. Kas, and P. Hagedorn (2023). “The Association between Actual and Perceived Discrimination (APAD): Technical Report”. In: SocArXiv.

Lecture 5 · Selection bias