learn-causal-inference-with-phoebe / Leader session 5 of 6
Learn Causal Inference with Phoebe · Leader session 5 of 6

Not everyone responds

Kestrelmark's re-engagement email truly lifts spend by 6.23 units on average, and that number was enough to send it to the entire base. It should not have been. An average is one summary of a distribution, and this one comes apart into four measured groups the moment the file is split by how recently the customer was active: one group gains 29.09 per person, two barely move at 2.10 and 1.04, and one loses 8.87. At a fully loaded 7.00 per send, only the first clears the cost. Tonight is about asking for the distribution before signing the rollout, and about the arithmetic that decides who is worth paying to reach.

🟠 Advanced Data and product leaders Anyone who has rolled something out to everybody 45 min
0-3 · Welcome 3-22 · An average is a summary of a distribution 22-40 · Build-along: find the segments 40-45 · Q&A
Part 0

Where tonight sits

Six sessions, 45 minutes each, no code and no query boxes. Session 1 was the three rungs, session 2 the claim audit, session 3 the covariate list, session 4 whether the question is answerable at all. Tonight is the last conceptual gap between a correct number and a correct decision: the number is an average, and the decision is about people. Session 6 turns all five into a brief you can hand to an analyst. The example throughout is Kestrelmark, a subscription retailer whose re-engagement email appears to lift spend by 10.54 units and truly lifts it by 6.23.

Live = presented in the 45 minutes Self-study = the full depth, after class 🔍 Every diagram zooms

★ What you walk out with tonight. The four groups any yes-or-no intervention splits a population into, measured on Kestrelmark's own file: 20.4 percent persuadable at +29.09 each, 22.4 percent sure things at +2.10, 49.3 percent lost causes at +1.04, and 7.9 percent sleeping dogs at -8.87. At a fully loaded 7.00 per send, only the persuadables clear the bar. The programme as run is a blanket send to all 5,000 and it is worth -3,848; sending only to the 20.4 percent persuadable segment is worth +22,578. So a campaign with a healthy, correctly identified, positive average effect of 6.23 destroys value as it stands, and the average is the thing that hid it. And the honest limit: per-person effects are far harder to estimate than averages, so the right ask is a few large interpretable segments rather than a score nobody can audit.

LiveWhy the average is the wrong unit for a rollout3 min▶

The number that comes back from a causal analysis is almost always an average across everybody in the study. It answers a question of the form "if we had done this to all of them instead of none of them, how much more spend would there have been". That is a real question and it is worth answering carefully, which is what the first four sessions were about.

A rollout is a different question. It asks who to send the thing to, at what cost, and the answer depends on how the effect is spread across the population rather than on where its centre sits. A campaign can have a solidly positive average and still be the wrong campaign, because the average is silent on whether the gain sits in a tenth of the base or in all of it, and silent on whether anybody was made worse off.

Real world

Kestrelmark's rollout paper had one number in it. The effect was measured on the 5,000 customers who had been in the pilot, it came out positive, and the recommendation was to send the email to the whole file every month. Nobody asked which customers the 6.23 came from. The answer was one field away: split the same pilot by recency and almost all of the value sits in a fifth of the base, with another 7.9 percent going backwards. The question was not suppressed; it simply was not on the form.

Self-studyFour words for the four groups4 min▶
  • Persuadables - they act because the treatment reached them, and would not have otherwise. This is the entire source of value in the campaign, and every unit of budget that lands anywhere else is waste.
  • Sure things - they were going to act either way. Reaching them costs money and produces nothing, though it produces a very healthy-looking response rate, which is why response rate is the metric that keeps bad campaigns alive.
  • Lost causes - they were never going to act, treated or not. Cheap to be wrong about, since the only loss is the cost of the send.
  • Sleeping dogs - the treatment makes them less likely to act. They unsubscribe, they mark the sender as spam, they remember they were meaning to cancel. Reaching them costs money and destroys value on top.

These names come from marketing practice and they are not technical terms, but the split behind them is exact: for a yes-or-no treatment and a yes-or-no outcome, every person falls in one of those four boxes and no other. A leader who can ask "what share of the file is in each box" has asked the only targeting question that matters.

Part 1 · covers the four groups and the arithmetic of an average

The average effect is a number nobody experienced

10 min live

The effect of a treatment on one particular person is the difference between what happened to them and what would have happened to them otherwise. Only one of those two ever occurs, so no individual effect is ever observed directly. What a study recovers is the average of that difference across a group, and averaging is the step where the interesting structure disappears.

The measured split of 5,000 customers, by recency. Only one group creates value. Persuadables 20.4% Sure things 22.4% Lost causes 49.3% 7.9% ★ Persuadables 1,022 people +29.09 each lapsed 30-90 days, the only group that pays Sure things 1,120 people +2.10 each active now, buying either way Lost causes 2,465 people +1.04 each dormant 12 months, they barely move ✗ Sleeping dogs 393 people -8.87 each cancelled once, the email costs them Measured, not assumed: +29.09 and -8.87 both vanish into an average of 6.23.
🔍 Click to zoom - four groups, one of them worth budget, one of them worth avoiding, and both invisible in the average.

These four numbers are a measurement, not an illustration. Kestrelmark's file already carries a recency segment, and splitting the same pilot by it produces the four groups directly: 20.4 percent lapsed 30-90 days gaining 29.09 each, 22.4 percent still active gaining 2.10, 49.3 percent dormant a year gaining 1.04, and 7.9 percent who have cancelled once losing 8.87. Nobody had to guess the shape and nobody had to build anything new. The rollout memo reported the 6.23 and none of the four.

LiveThe average effect and the effect on one person are different objects4 min▶

For each customer there are two possible spend figures: the one that follows from receiving the email and the one that follows from not receiving it. Their difference is that customer's own effect. Exactly one of the two ever happens, so no person's effect is ever measured. This is not a data-collection failure that a better warehouse would fix; it is the shape of the problem.

What a well-identified analysis recovers is the average of those unobserved differences over a group. It is a genuine quantity, it is the right answer to the question "does this work", and it has one property worth stating out loud in every readout: the average need not equal any individual value. A household with 2.4 children does not exist either, and nobody has ever tried to design a car seat for one.

  • An average over everybody answers a rollout-to-everybody question. If the plan is to treat the whole base, the average really is the number you want, and the cost side below is what decides it.
  • An average over a segment answers a segment question. Which is why the useful ask is not "the effect", but "the effect for whom".
  • An average hides its own composition. Two campaigns with identical averages can differ in every way that a budget owner cares about.
LiveThe four groups, and why only one of them earns anything4 min▶

Take a treatment that is either applied or not, and an outcome that either happens or does not. Every person in the file is in one of four boxes: they act only if treated, they act either way, they act neither way, or they act only if left alone. That exhausts the possibilities, and the four boxes behave completely differently under a budget.

  • Persuadables are the whole business case. The incremental revenue of the campaign is created here and nowhere else. At Kestrelmark they are 20.4 percent of the file, gaining 29.09 each, so the large majority of the send budget lands somewhere that produces nothing or worse.
  • Sure things are the flattering group. They open, they click, they buy, and they would have bought regardless. At Kestrelmark they are 22.4 percent of the file and the email is worth 2.10 to them. Every response-rate dashboard rewards reaching more of them, and every one of those responses is a cost with no return behind it.
  • Lost causes are cheap mistakes. The loss is the send cost, nothing more. They are the largest group here, 49.3 percent, at 1.04 each. In an email programme the send is close to free, which is precisely why email programmes grow until the persuadable share is tiny.
  • Sleeping dogs are the expensive mistake. Contact triggers the unsubscribe, the spam complaint, the cancellation the customer had been putting off. Kestrelmark's are the 7.9 percent who have cancelled once already, and the email costs them 8.87 each. The cost is the send plus the destroyed value plus a channel that no longer reaches them.

The uncomfortable consequence: two campaigns can post the same average effect while one of them is mostly persuadables at a modest gain and the other is a large persuadable gain partly cancelled by a group being driven away. Kestrelmark is the second kind, and now measurably so. That is a better campaign badly aimed, and no summary metric tells it apart from the first kind until somebody splits the file.

The same 6.23, drawn as a distribution instead of a single number. the average, 6.23 no segment sits here -8.87 each 7.9% of the file +1.04 49.3% +2.10 22.4% +29.09 each 20.4% of the file -25 0 +25 +50 Effect of the email on 90-day spend, in units. Bar height is the share of the file. 20.4% persuadable, +29.09 each, lapsed 30-90 days 22.4% sure things, +2.10 each, active either way 49.3% lost causes, +1.04 each, dormant 12 months 7.9% sleeping dogs, -8.87 each, cancelled once
🔍 Click to zoom - the average lands in the empty gap between the segments that barely move and the one that gains a great deal. An average is a property of a group, and here it names a value no segment has.
LiveWhat the 6.23 is actually made of, and who it costs4 min▶

Work this one slowly, because the composition is the argument. 5,000 customers, a true average effect of 6.23, and four segments that the file can already tell apart.

  • The gain is concentrated. 20.4 percent of the file, 1,022 people, gain 29.09 each. Essentially all of the value the campaign creates is created here.
  • Two segments barely move. 22.4 percent gain 2.10 each and 49.3 percent gain 1.04 each. Between them they are most of the base, and the email is close to a rounding error for all of them.
  • One segment is harmed. 7.9 percent, 393 people, lose 8.87 each. These are accounts that cancelled once and were won back, and the monthly reminder that a subscription exists is doing them measurable damage.

Now read the headline again. A campaign that reached only the 1,022 would be worth 29.09 per head instead of 6.23, and would stop paying to damage 393 customers a month. Nothing in the average distinguishes this world from one where nearly everybody gains a little and nobody is harmed at all, and nothing in the standard readout would surface the difference. The average is not wrong. It is silent, and silence was read as reassurance.

The one-line version for a review. A positive average is fully compatible with a substantial group being harmed. It is not a claim that nobody was hurt, and reading it as one is the most consequential misreading of a causal estimate in commercial work.

Self-studyKestrelmark's own case: a true 6.23 and a rollout to everybody4 min▶

The Kestrelmark work is unusually clean by the time it reaches this point. The naive comparison of emailed against not emailed gives 10.54. Holding season and tenure fixed brings it to 6.56, against a truth of 6.23, so the identification work has done its job and the gap left over is 0.33. That is a good analysis by any standard the first four sessions set.

And on the strength of that single number the email went to the entire subscriber file, monthly. The step from 6.23 to "send it to everybody" was never argued; it was assumed, because the number was positive and there was only one number. Three separate questions were skipped in that step, and all three have since been answered from the pilot data that was already sitting there.

  • Who produced the 6.23. Customers who lapsed 30 to 90 days ago, 20.4 percent of the file, at 29.09 each. The rollout to the whole file spends the large majority of its budget outside the only group that earns.
  • Whether anybody was moved the other way. Yes: the 7.9 percent who have cancelled once already lose 8.87 each. They were the textbook sleeping-dog population, and the campaign was aimed at exactly them.
  • What the send costs. 7.00 fully loaded, against segment effects of 29.09, 2.10, 1.04 and -8.87. One of those four clears the cost. Part 2 walks the arithmetic.

None of the three required a new dataset. Two were a segment split of an analysis that already existed, and the third was one number from finance.

Part 2 · covers the policy question, the cost side and the honest limit

Why this changes the decision, not just the number

9 min live

The distinction is not academic tidiness. "Does it work" and "who should get it" are answered by different objects, and the second is almost always the question that was actually asked while the first is the one that was commissioned. Add a cost per treated unit and the two can point in opposite directions.

LiveThe policy question was asked, the effect question was commissioned4 min▶

Listen to how the request arrives. "Should we roll the email out?" "Is this worth the budget next year?" "Do we keep doing this?" Every one of those is a policy question: it asks for a rule about who gets treated. What gets written on the analysis ticket is "measure the incremental effect of the email", which is an effect question and returns a single average.

The gap is invisible because the average answers the policy question in one special case: when the policy under consideration is "treat everybody or treat nobody" and there is no cost per unit. That case is rare, and it is nobody's actual choice, because the real menu always includes "treat this segment" and there is always a cost.

  • "Does it work" needs a centre. One number, one interval, one comparison against zero.
  • "Who should get it" needs a spread. Which groups gain, by how much, and which lose. A ranking, not a point.
  • The second cannot be derived from the first. No amount of precision on the average recovers the distribution behind it, which is why asking for a tighter confidence interval is answering the wrong request more carefully.
Real world

The commonest form of this in a quarterly review is a leader asking "so should we expand it" and receiving the average effect with an interval, twice, in slightly different words. Both parties leave believing the question was answered. It was not asked in a form the analysis could hear.

LiveThe cost side: a positive effect that loses money4 min▶

Every send has a cost: creative, deliverability, list health, the attention it spends, and in most channels a real cash number per unit. Kestrelmark's fully loaded cost per treated customer is 7.00 units against the same currency as spend. The campaign's average effect is 6.23. Put the two beside each other segment by segment and the programme stops looking like a modest success.

SegmentShare of the fileEffect of the email, eachAgainst a cost of 7.00
Persuadable, lapsed 30-90 days20.4%+29.09clears the bar, the only one that does
Sure thing, still active22.4%+2.10loses money
Lost cause, dormant 12 months49.3%+1.04loses money
Sleeping dog, cancelled once7.9%-8.87loses money twice over

One segment out of four earns its send. Everything else on the list is paid for and returns less than it cost, and the smallest group returns less than nothing. That turns into two numbers a budget owner can act on.

DecisionWho is treatedNet at 7.00 per send
Send to everybody, the programme as runall 5,000-3,848
Send only to the persuadable segment1,022, the 20.4%+22,578
Send to nobody00

Same intervention, same true effect of 6.23, same correctly identified analysis. The difference between -3,848 and +22,578 is entirely a question of who was on the list. This is the sharpest form of tonight's argument: the programme as run destroys value, and the number that authorised it is a healthy-looking positive 6.23.

  • The rule is one line and nobody applies it. A segment is worth sending to when its own effect exceeds the cost per send. At 7.00, exactly one of Kestrelmark's four segments passes, and it is a fifth of the file. No model is needed to check this, only the effect per segment and a number from finance.
  • Perfect targeting is not on the menu. The +22,578 row assumes the persuadable segment can be reached exactly. Recency is a real field in the warehouse rather than a score, so that row is closer to achievable here than it usually is, but a four-bucket segment is still coarse and every bucket contains people who do not behave like their label. Treat it as the ceiling and ask how much of the gap a crude segment closes.
  • The cheaper the channel, the worse the discipline. When the per-unit cost rounds to nothing, the break-even share rounds to nothing too, and the programme expands until the sleeping dogs dominate. The cost that eventually bites is the channel itself.
LiveThe honest limit: per-person effects are noisy3 min▶

Having argued that the distribution is what matters, the fair thing to say next is that the distribution is much harder to recover than the average. An average pools the whole sample; an effect for a subgroup uses only that subgroup, and an effect for a person uses a sample of one, which is why individual effects are estimated rather than observed and are estimated badly.

This is a statistical fact and not a reason to give up, but it does set the shape of a sensible ask. A model that assigns every customer a personal uplift score will produce a beautifully ranked list, and much of that ranking will be noise that reverses when the model is refitted next month. A split into four or five segments defined by things the business already understands will be coarser and far more stable. Kestrelmark is the cheerful version of this: the split that mattered turned out to be a single field the business had all along, four recency buckets that anyone in the room can describe.

  • Ask for few, large, interpretable segments. Recency band, tenure band, plan tier, channel. If a segment cannot be described in a sentence, it cannot be reviewed, and an unreviewable targeting rule is a permanent unaudited policy.
  • Ask whether the split was pre-specified. Segments discovered after seeing the results will always contain a spectacular one. Discovery is legitimate as a source of hypotheses and illegitimate as a source of conclusions.
  • Ask what happens if the ranking is wrong. A targeting rule that loses little when the ranking is mediocre is worth having. One that only pays off when the ranking is excellent is a bet on the model, not on the campaign.

The stable version of the ask. "Give me the effect in four segments I can name, with the same adjustment set you used for the headline, and tell me which segments the analysis genuinely cannot separate." The last clause is the one that keeps the answer honest.

Self-studyWhere the machinery for this lives3 min▶

The methods that estimate effects conditional on customer characteristics, and that turn those estimates into a treat-or-not rule, are worked properly on the practitioner track rather than named vaguely here.

  • Practitioner session 7 covers conditional average effects and the three standard meta-learners, each with the weakness its authors documented: the single-model approach whose regularisation pulls the effect toward zero and can drop a weak effect entirely, the two-model approach that avoids that and still pays a regularisation cost, and the approach built for the treated-to-control imbalance that is normal outside experiments.
  • Practitioner session 8 covers targeting: ranking by predicted uplift, reading the gain against a random-targeting baseline, and choosing where on that curve to stop sending. That is where the coarse-segment discipline above gets a number attached to it.
  • Estimating any of this from observational data is a different course. Propensity scores, inverse probability weighting, doubly robust estimation, difference-in-differences, synthetic control and the DoWhy workflow all belong to learn-experimentation-with-phoebe, which teaches each of them properly. The work here stops at what the question is, whether it can be answered, and who the answer is about.
Build-along

Find the segments

★ 18 min · everyone builds

No code and no model. Bring one intervention your team has rolled out to everybody: a campaign, a discount, a nudge, a mandatory onboarding step, a notification. If you have nothing to hand, use Kestrelmark's monthly re-engagement email to the whole subscriber file.

Write the intervention and who currently receives it. One sentence each. If the answer to the second is "everybody", write "everybody" rather than softening it, because that is the policy under review and it should be stated as plainly as any other.

Name the four groups for this intervention in your own language. Who acts only because they were reached. Who was going to act anyway. Who never acts. Who is pushed away by being reached. Use the words your team uses for customers, not the words on this page.

Guess which segments sit in each group, and commit to the guess. Recency, tenure, plan, channel, past response. You are not being asked to be right; you are producing hypotheses that can be tested against an analysis that mostly already exists. A guess written down before the data is worth ten guesses made after it.

Get the cost per treated unit from finance, fully loaded. Not the marginal send cost. Include creative, list management, the deliverability cost of a hard send, and any support contact the intervention generates. Most teams have never put a number here and the first attempt is usually an order of magnitude out, which is itself worth discovering.

Work out the break-even persuadable share. Divide the cost per unit by the gain per persuadable person, and that is the fraction of the file that must respond before the rollout pays. Then ask the honest question: is the group you never expect to respond larger than one minus that fraction? If it is, the rollout to everybody is losing money today.

Write down the single segment you would test first, and the one you would stop sending to. One of each, named, with the reason in a sentence. Two lines is a targeting proposal; a per-customer score is a project.

★ The one-page segment worksheet, which is the whole artifact for tonight Intervention: monthly re-engagement email Currently sent: everybody on the subscriber file, 5,000 people Effect on hand: 6.23 average, correctly identified, season and tenure held fixed Split field: recency, four buckets, already in the warehouse group the recency bucket it maps to share effect each persuadable lapsed 30-90 days 20.4% +29.09 sure thing active, buying either way 22.4% +2.10 lost cause dormant over 12 months 49.3% +1.04 sleeping dog cancelled once already 7.9% -8.87 Cost per treated unit (finance, fully loaded): 7.00 Clears that cost: the persuadable bucket only, 29.09 against 7.00 Verdict at the current send: the blanket send to all 5,000 is worth -3,848, the persuadable bucket on its own is worth +22,578, so the rollout as run destroys value while the average effect stays genuinely positive. Test first: hold the send to lapsed 30-90 days for one cycle. Stop sending to: accounts that have cancelled once and been won back.

Keep the worksheet beside the readout, not in a deck. Kestrelmark's four rows are measured, and they are still coarse: recency is four buckets rather than a score, and every bucket holds people who do not behave like their label. That is the trade a business actually faces, a segment it can name, run and audit against a per-customer score it cannot, and a coarse segment that clears the cost beats a precise one nobody will sign. Your own four rows start as guesses, which is fine: they turn an open-ended "find the segments" request into four named hypotheses with a cost threshold attached, and when the split comes back different, the gap between the guess and the measurement is the most useful thing anybody learns that quarter.

Homework

Before session 6

30 min
  1. Finish the segment worksheet for one intervention that currently goes to everybody, including the fully loaded cost per unit. Then list every segment whose effect you do not expect to clear that cost, and send the list to whoever owns the budget with no commentary. The list does the work.
  2. Take one existing causal readout your team has produced and ask for the same estimate split by two or three segments that already exist in the warehouse. Note how long the request takes to fulfil; that duration is a fact about your team, not about the question.
  3. Find the intervention in your organisation most likely to have a sleeping-dog population, and write one sentence on how you would know. Reactivation, price reminders, dormant-account outreach and win-back offers are the usual candidates.
  4. Write down one targeting rule your organisation runs today that nobody can describe in a sentence. Bring it to session 6, where the question becomes what to require in writing before such a rule ships again.
Check yourself

Three questions

An analysis reports a correctly identified average effect of 6.23 and a tight interval around it. A colleague concludes that no customer was made worse off. What is wrong with that?

393 of the 5,000 customers are worse off by 8.87 each, and none of that appears in the 6.23. Precision on the centre buys nothing at all about the spread, which is why a tighter interval answers the wrong question more carefully.

The fully loaded cost of reaching one customer is 7.00 units and the true average effect is 6.23. What follows?

A positive effect and a losing rollout are entirely compatible: the blanket send to all 5,000 is worth -3,848. Stopping altogether is also wrong, because the 20.4 percent persuadable segment gains 29.09 each and is worth +22,578 on its own. The answer is a list, not an on-off switch.

A team offers to build a model scoring every customer with a personal predicted uplift, so targeting can be fully individualised. What is the reservation a leader should raise?

Accuracy on the outcome is not accuracy on the effect, and a per-person score that nobody can describe becomes an unauditable standing policy. The reservation is not that individualisation is wrong in principle, only that the estimates get noisy exactly where the groups get small.

Sources covered

What tonight maps to

✓ Average effects hide heterogeneity An individual effect is never observed; what a study recovers is an average, and the average need not equal any individual value. Kestrelmark's 6.23 is four measured segments at +29.09, +2.10, +1.04 and -8.87, and it matches none of them.
✓ The four groups a yes-or-no treatment creates Persuadables, sure things, lost causes, sleeping dogs, measured on the file at 20.4, 22.4, 49.3 and 7.9 percent. Only the first creates value, and response-rate metrics reward reaching the second.
✓ Why a positive average can support the wrong policy "Does it work" needs a centre, "who should get it" needs a spread, and the second cannot be derived from the first. At 7.00 per send, a true effect of 6.23 is worth -3,848 across the whole file and +22,578 on the persuadable segment alone.
✓ The honest limit on heterogeneity Subgroup effects use only the subgroup, so they are noisy. Few large interpretable segments, pre-specified, over a per-person score nobody can audit.
◐ Conditional average effects and the meta-learners Practitioner session 7. The single-model, two-model and imbalance-oriented approaches, each with its documented weakness.
◐ Uplift ranking and who to treat Practitioner session 8. Targeting by predicted uplift against targeting at random, and where on the curve to stop.
· Propensity scores, IPW, doubly robust, difference-in-differences, synthetic control, DoWhy Not covered by design, in any session. Estimating an effect from observational data belongs to learn-experimentation-with-phoebe, which teaches every one of these. Naming who the effect is about is the work here.

Session 5 cheat sheet

The average is a summaryAn individual effect is never observed. 6.23 is a value no segment has.
Four groups, one of them earnsPersuadables, sure things, lost causes, sleeping dogs. Only the first creates value.
Response rate rewards the wrong groupSure things open, click and buy, and would have bought anyway.
Positive average, harmed minorityMeasured: 20.4% at +29.09, 22.4% at +2.10, 49.3% at +1.04, 7.9% at -8.87. Average 6.23.
Two different questions"Does it work" needs a centre. "Who should get it" needs a spread.
Cost turns a win into a lossAt 7.00 per send the blanket rollout is worth -3,848; the persuadable segment alone is +22,578.
Send only where the segment clears the costAt 7.00, only the 29.09 segment passes. The other three lose money.
Few segments, not per-person scoresSmall groups give noisy effects. Ask for four segments you can name, pre-specified.