Learn with Phoebe Β· Data Science

Learn Causal Inference with Phoebe

Kestrelmark sent a re-engagement email and the customers who received it spent 10.54 more than the customers who did not. The number is real, reproducible, and not the effect of the email, which is 6.23. Everything between those two figures is made of variables nobody wrote down. This course is about the part of causal work that happens before any estimator: which question is being asked, whether the data can answer it at all, and which of the columns in your table will make the answer worse if you control for them. Six leader sessions on reading and commissioning a causal claim, ten practitioner sessions on the graph, and a bench where the true effect is known by construction so your adjustment set can finally be scored.

16sessions, two tracks
3rungs on the ladder
5000customers from a written causal model
42times worse: every column against the right ones
45min per session

Leader track πŸͺœ Β· six sessions, no code

For whoever approves the spend and reads the lift number. Which rung a claim is on, what to audit, what to refuse to sign, and the four options when the question turns out to be unanswerable.

Practitioner track πŸ”§ Β· ten sessions, one defensible claim

One intervention, Kestrelmark's re-engagement email, taken from a blank page to a claim you can defend in review. Session 10 scores it against a truth the engine computes rather than estimates.

✏️ Practitioner session 1 · start here

Draw the DAG before touching the data

An arrow is a claim and a missing arrow is a stronger one. Kestrelmark's naive lift is 10.54 against a truth of 6.23, and the gap has two names.

β–Ά Start here
πŸ”€ Practitioner session 2

Confounder, collider, mediator

Three shapes, three fates. Conditioning closes one path, removes real effect from another, and creates association out of nothing in the third.

πŸšͺ Practitioner session 3

Identification before estimation

The back-door criterion stated properly, its two conditions, and what to do when no valid adjustment set exists in your data.

πŸšͺ Practitioner session 4

The front door

When an unmeasured confounder shuts the back door and a mediator rescues the estimate. Three conditions, and why Kestrelmark fails the first.

πŸ”„ Practitioner session 5

Simpson's paradox

The same numbers, two opposite conclusions, and a graph rather than a table deciding which one to act on.

πŸŒ— Practitioner session 6

Counterfactuals

Rung three: would this particular customer have churned anyway? Two worlds at once, and what a fully specified model buys you.

πŸ“ˆ Practitioner session 7

CATE and uplift

The average effect is a summary of a distribution. S-, T- and X-learners, and the documented weakness of each.

🎯 Practitioner session 8

Qini curves and who to treat

Targeting by predicted uplift against targeting at random, and the customers a campaign actively costs you.

βš–οΈ Practitioner session 9

Sensitivity analysis

How strong would an unmeasured confounder have to be to overturn this? The honest answer to the objection you cannot rule out.

πŸŽ›οΈ Practitioner session 10

The adjustment bench

Six adjustment sets scored against a truth known by construction. The right one leaves noise; every column in the table misses by 5.25.

πŸ”’ the capstone
start here foundations hands-on advanced and capstone

Choose your path πŸ—ΊοΈ

Three doors into the same discipline. Both tracks start at their own session 1.

πŸ’Ό I approve the spend and read the lift L1 β†’ L2 β†’ L3 β†’ L6 the ladder, the audit, the covariate list, the brief
πŸ”§ I build the model P1 β†’ P2 β†’ P3 β†’ P9 β†’ P10 the graph, the three shapes, identification, the objection, then score it
🎯 Everything, in order L1 β†’ L4 β†’ P1 β†’ P4 β†’ P5 β†’ P6 β†’ P7 β†’ P10 from a lift number nobody can defend to an adjustment set you can

Your passport 🎫

Clear all three quiz questions in a session and it gets stamped. Sixteen stamps across both tracks, and they live in this browser only.

What is real here 🧾

A course about defensible claims should be exact about its own.

ClaimStatus
The 5,000 Kestrelmark customersGenerated from a structural causal model written out in the source file, one fixed seed, identical for every learner. Every coefficient is visible
The true effect of 6.23Computed, not estimated: the model is run twice with the email forced on for everyone and then forced off, and the mean spend differenced. That is the do-operator by brute force
The engine agrees with the algebraWorked out by hand the effect should be the mean direct effect of 5.16 plus 3.0 times the change in open rate, which is 6.22. The simulation gives 6.23. A simulation checked only against itself would prove nothing
Every estimate on the benchA real least-squares fit of spend on the email plus the ticked covariates, solved in the page. The coefficient on the email is the estimate
The ladder: 10.54, 6.56, 5.26, 5.48, 2.59, 0.98Arithmetic on that data. Nothing on this bench is modelled and no result is written down in advance
Noise is not bias, and the bench separates themThe correct set's residual of +0.33 changes sign across five seeds and averages +0.06. Every contaminated set keeps its sign every time
The bystander is genuinely harmlessAdding the device variable changes the estimate by nothing to two decimal places, which is exactly why a covariate list cannot be read by eye
No estimator is taught anywherePropensity scores, inverse probability weighting, doubly robust methods, difference-in-differences and synthetic control all belong to the experimentation course, which is named on every page that reaches for one
KestrelmarkA fictional subscription retailer. The confounding is ordinary; the company is not real

The knowledge map 🧠

Both tracks at a glance - hover a session to spotlight its concepts, click any node to jump in.