Medicine is where careful inference matters most. A randomized controlled trial is the gold standard precisely because it pins an effect on the treatment and nothing else. This case study takes one trial and shows how a single dataset answers three different questions, each with the right tool.
(1) Within the treatment arm, did LDL fall from baseline to week 12? (2) Did LDL fall more on treatment than on placebo? (3) Was the responder rate higher on treatment than placebo?
The Data & The Questions
One row per patient: trial arm, ldl_before, ldl_after, and a
responder flag. The within-patient change (before − after) is positive when LDL drops.
One row per patient with arm (treatment/placebo), age,
ldl_before, ldl_after (mg/dL), and responder (0/1).
At a glance, treatment patients dropped about 29 mg/dL on average versus about 10 mg/dL on placebo, and more of them were responders. But a trial proves nothing until each claim is tested against the right null, and crucially, the placebo arm is what separates the drug's effect from everything else that makes numbers move in a trial.
Three Questions, Three Tests
The design of each question dictates its test. The same patients, structured three different ways.
| Question | Structure | Test | H₀ / H₁ |
|---|---|---|---|
| Did LDL fall on treatment? | paired (same patient, before vs after) | paired t-test | no change / LDL decreased |
| More than placebo? | 2 independent arms, numeric change | two-sample (Welch) t | equal change / treatment change larger |
| Higher responder rate? | 2 independent arms, yes/no | two-proportion z | pₜ = pₚ / pₜ > pₚ |
The first question is paired, each post value has a matching baseline on the same person, so a paired test isolates the within-patient change. Treating those columns as two independent samples (a classic mistake) would throw away the pairing and weaken the test. The second and third questions compare the two independent arms, one on a numeric change, one on a yes/no outcome.
The Analysis & Results
Each test comes with an effect size and a confidence interval, and the placebo comparison reveals how much of the raw drop is really the drug.
| Question | Result | Verdict |
|---|---|---|
| Q1 paired (treatment) | drop ≈ 29 mg/dL, t = −19.7, p ≈ 10⁻³⁴ | LDL fell, decisively |
| Q2 two-arm change | extra drop ≈ 18 mg/dL, t = 8.45, p ≈ 10⁻¹⁴, CI [14, 23] | more than placebo |
| Q3 responder rate | 52% vs 17%, z = 4.80, p ≈ 10⁻₆, gap CI [+22, +48] pts | far more responders |
All three agree, and the placebo arm is the hero of the story. Treatment patients dropped 29 mg/dL, but placebo patients dropped about 10 mg/dL on their own (diet, measurement timing, the trial effect). So only the ~18 mg/dL difference can be credited to the drug. Without the control arm, the full 29 would have looked like the treatment's effect, a textbook reminder of why randomized comparisons matter.
The Statistician's Report
How to summarize for a clinical team or a non-statistician reviewer.
Conclusion: the treatment works, on all three measures
What we found. Patients on the treatment lowered their LDL cholesterol by about 29 mg/dL over 12 weeks. The part we can credit to the drug, beyond what placebo patients dropped on their own, is about 18 mg/dL. And 52% of treated patients were responders (a 15%+ reduction) versus only 17% on placebo.
How confident are we? Extremely. Every comparison is far beyond the threshold for chance. Our 95% range for the drug's extra benefit is about 14 to 23 mg/dL, a clinically meaningful reduction even at the low end.
Why the placebo arm mattered. Placebo patients also improved by about 10 mg/dL. Comparing only before-versus-after on the treatment would have over-credited the drug by that amount. The randomized, controlled comparison is exactly what isolates the true effect, this is why single-arm before/after studies can be misleading.
Caveats. This measures a 12-week surrogate marker (LDL), not long-term cardiovascular outcomes. Safety, side effects, and durability are separate questions that a full trial program must answer before any clinical claim.
The paired-design lesson carries straight into machine learning: comparing two models on the same test cases is paired, and a paired test on the per-case differences is far more sensitive than treating the two score lists as independent, just as the paired before/after test is here.
Run all three trial tests in Python
The companion notebook explores the data with a baseline-balance check (confirming randomization), then runs the paired t-test, the two-sample Welch t-test, and the responder-rate test, using statsmodels (CompareMeans, proportions_ztest) for the intervals and the proportion test, with plots by arm.
View opens the rendered notebook instantly (no setup). Open in Colab runs &
edits it live in your browser. To run locally, install numpy, pandas, scipy,
matplotlib, statsmodels, and openpyxl and launch jupyter notebook.
🎓 Key Takeaways
- ✓One dataset, three designs: paired (within patient), two-sample (between arms), and a proportion (responder rate).
- ✓Paired before/after needs a paired test; treating it as independent wastes the design.
- ✓The placebo arm isolates the drug: 29 mg/dL total, but only ~18 mg/dL beyond placebo is the treatment effect.
- ✓Results: all three highly significant; responders 52% vs 17%; 95% CI for extra LDL drop [14, 23] mg/dL.
- ✓Caveat: a 12-week surrogate marker, not long-term outcomes; safety and durability are separate questions.
Quiz: Test Yourself
Eight quick questions on this case study. Answer them, hit Check Answers, and keep refining until you score 100%. Your progress is saved, so you can hop back to the chapter and return anytime.
Numbers were the easy part. A Customer Satisfaction Survey handles messier data, categories, ratings, and a top-box rate, with chi-square, a margin of error, and an ordinal test on one survey.