Public NHANES · I pulled the files · no industry money

Diet soda did not give you cancer.
Who drinks it wrote the scare.

People who already have diabetes and higher BMI show up in the diet-soda column. That selection makes crude charts look like the can caused the disease. I tested that story on open data. Cancer meme fails. Blood sugar mostly calms down. Weight association stays.

I built this with Grok 4.5 as a coding partner · NHANES 2011-2018 · USDA WWEIA · NCHS mortality · 2026-07-26 19:49 UTC

How to read this: the colored box under Take is enough for most people. Then Cancer if that is your fight, Diet for blood sugar and weight, Models if you want to see the ladder. Not medical advice.

31% vs 14%diabetes (self-report)
diet-soda only vs neither
+0.30 → +0.05blood-sugar marker (HbA1c)
crude → drop known diabetes
+2.5BMI still higher after controls
association, not proof of cause
~27cancer deaths in diet-soda group
HR 0.77, not significant
01

If you only read one block

Whole story in this box. Everything below is receipts and method.

Big picture

Diet-soda drinkers are not a random sample. They are older, heavier, and about twice as diabetic. That fact writes most of the scary charts you see online.

31% vs 14%self-report diabetes
diet-only vs neither
+0.30 → +0.05blood sugar (HbA1c)
after I drop known diabetes
+2.5BMI still higher after controls
still +2.3 without known diabetes
0.77cancer-death rate ratio (HR)
CI 0.51-1.15 · ~27 deaths
The feed “WHO says diet soda causes cancer. Higher cancer rates prove it. It wrecks blood sugar and makes you fat.”
What I found IARC 2B is limited-evidence hazard talk, not a ban and not JECFA risk at usual intake. People who already look sick on paper drink more diet soda. Cancer death is not significant, and the diet-soda arm only has about 27 cancer deaths. Weak test. Not a safety stamp.

What I learned

  • Who drinks it is half the analysis. Skip that and every crude bar chart lies to you.
  • Blood sugar scare is mostly reverse traffic. Known diabetes people switch. Remove them and HbA1c mostly calms down.
  • Weight association is stubborn. About +2.5 BMI units after controls. Still not proof the can caused the pounds.
  • Cancer slogan is wrong. Tiny long risks stay untestable here. Public survey plus short mortality follow-up cannot clear lifelong site-specific cancer.
Why I bothered with models

A raw bar chart only says “diet-soda people look different.” Models ask a harder question: after I line people up on age, sex, race/ethnicity, education, income, smoking, and calories, does the gap still sit there? Then I stress-test blood sugar by dropping people who already know they have diabetes (people who often switch drinks after diagnosis). That is not a court verdict of “proved.” It is a filter on lazy causal talk. Scoreboard: what held.

Quick words: diet-only = drank diet soft drinks, not regular, on the survey day. Neither = no diet and no regular soft drinks that day. HbA1c = blood-sugar control marker. HR = hazard ratio (cancer death rate comparison).

Sample I used: 19,384 non-pregnant adults age 20+, reliable Day-1 diet. WWEIA 7102 diet soft drinks vs 7202 regular. Groups: diet-only 1,744, regular-only 5,934, both 148, neither 11,558.

Stats honesty up front: I used multi-cycle MEC weights (normalized). I did not run full NCHS PSU and strata variance. Point estimates are the useful part. Tiny p-values are too flattering. One day of diet recall is not a life history. Not medical advice.

Policy-ish bottom line: do not treat meme posts as risk assessment. IARC 2B is not a soda ban. JECFA still frames an ADI many cans per day order of magnitude at labeled use. Swapping sugar soda for diet soda is a different question than “zero risk forever.” Water still wins the boring contest.

02

In normal words

If higher cancer % and higher BMI in diet-soda drinkers feel like case closed, read this first.

Picture this

Someone gets diabetes or starts worrying about weight. They switch to diet soda. NHANES photographs that day. The chart then says “diet soda people have worse labs.” That can be the switch, not the chemical. I stress-tested that idea. For HbA1c it mostly holds. For BMI the gap stays. For cancer death I simply do not have enough events to act tough.

Meme number

~15%

Crude ever-cancer in diet-only vs about 11% in neither. Real gap. Bad causal read without age and who switched.

Number people skip

~27

Cancer deaths in the diet-soda arm. That is why HR 0.77 with a CI from 0.51 to 1.15 is a weak test, not proof of safety.

The mechanism

~2×

Diabetes rate roughly doubles in diet-only vs neither. Same cast of characters as higher BMI and slightly older age.

Two different questions

Crude % by drink group: who is already in the diet-soda column?
Models with age, lifestyle, and “drop known diabetes”: does the gap still look like a causal punch?
Same survey. Different question. The feed swaps them on purpose or by accident.

Hazard is not risk

IARC Group 2B asks whether something might cause cancer under some conditions when evidence is limited.
JECFA ADI asks what daily intake looks acceptable after risk assessment. For aspartame that is many cans per day order of magnitude at common can doses, not “one can equals cancer.”
If your feed said WHO banned diet soda, your feed lied by compression.

03

Myth board

Stuff people actually post. My call after running the numbers.

Cancer / WHO / one can

Slogan fails hazard vs risk, dose chart, and a mortality model short on diet-soda events.

BUSTED (slogan)

Diabetes / blood sugar

Crude HbA1c about +0.30. After I drop known diabetes, about +0.05. Mostly selection. Not zero. Not proven cause.

NUANCED

Makes you fat

BMI stays about +2.5 after lifestyle controls. Association that will not die. Still not a trial of causation.

NUANCED

Same people as regular soda

No. More diabetes, higher BMI, higher income, older. Love plot and ML both say selection.

BUSTED

Destroys microbiome

Real question for feeding studies. NHANES has no stool data. I name it so I do not fake a null.

UNTESTABLE HERE

Only one model works

I show the BMI spec curve and cycle stability. Multiverse is still my design. At least you can see it.

PROCESS
They sayI sayJump
WHO banned diet soda / causes cancer2B is not a ban. Mortality test is weak on events.Cancer
Causes diabetesBlood-sugar gap mostly shrinks after known diabetes outDiet
Makes you fat~+2.5 BMI association. Cause not shown.Diet
Destroys microbiomeCannot test hereLimits
Mouse / one can poisonDose translation + ADI cans chartCancer
Industry covered it upPublic files. Open code. No industry check.Build
04

Cancer

Loudest claim on the internet. Four layers. Agencies, dose, crude %, deaths over follow-up time.

What I care about

Hazard label is not risk at soda doses. Crude ever-cancer % is polluted by who drinks diet soda. Follow-up cancer death is the harder public test, and the diet-soda arm is thin on events.

Hazard is not risk

IARC hazard identification vs JECFA risk and ADI
IARC vs JECFA vs FDA. Group 2B is limited-evidence hazard language. It is not the sentence “diet soda gives you cancer at normal intake.”

Dose (ADI to cans per day)

Approximate cans per day to reach JECFA ADI
Order-of-magnitude cans/day to hit JECFA ADI 40 mg/kg at about 180-200 mg aspartame per can. Not me telling you to drink a dozen. A check on “one can equals cancer.”

Crude ever-cancer looks scary

Unweighted crude ever-cancer: diet-only about 14.6% vs neither about 10.5%. Age bands shrink the scare. They do not wipe every residual gap (still higher in 60+ in my tables). Design cannot prove cause. Lifetime cancer history next to yesterday’s diet is a bad match.

Crude ever-cancer versus ages 60+
Composition matters. Left: crude %. Right: ages 60+. Residual gaps can remain. I am not claiming age explains everything.
Ever-cancer by age band and beverage group
Age band by drink group. Stratify before you screenshot a bar into a thread.

Cancer death with follow-up months

Cox model (unweighted primary, months since exam, diet-only vs neither, age/sex/smoking): cancer-death HR about 0.77 (95% CI 0.51-1.15), p about 0.20. Total cancer deaths: 285. In the diet-only group: about 27. Not significant. Wide interval. I will not sell that as safety. Rough power notes that assume balanced exposure are optimistic anyway. Diet-only is about 9% of the sample.

Kaplan-Meier cancer death free survival by beverage group
Follow-up time. Rare events in the diet-soda arm. Read next to the forest plot.
Forest plot of cancer death and all-cause death hazard ratios for diet-only adults
Wide intervals. Cancer death and all-cause. Not significant is not “protective” and not “proven harm.”
I am not claiming

I did not prove aspartame is safe forever. I did not rule out small long-latency site-specific risks (liver incidence and friends). I did not re-run NutriNet. I busted a slogan and showed what this public design can carry.

05

Blood sugar and weight

Everyday claims. Same selection story. Different leftover gaps.

Diabetes scare mostly shrinks

Crude diet-only HbA1c association about +0.30 points. After I exclude known diabetes, about +0.05. That is mostly people who already had the diagnosis walking into the diet-soda group. Residual is small. Still not zero. Still not a trial that proves cause.

HbA1c by beverage group
Crude HbA1c. Higher in diet-only tracks higher diabetes prevalence. Next move: drop known diabetes.
Diet soft drink servings vs BMI by diabetes status
Who is already sick or heavier. They show up in the diet-soft column.

Weight association sticks

BMI for diet-only vs neither stays about +2.5 kg/m² after lifestyle covariates, and about +2.3 after I drop known diabetes. Real cross-sectional association. Not proven causation. Adding diet-soda features barely helps predict BMI (ΔR² about 0.007).

BMI by beverage group
Crude BMI. Diet-only sits higher. Read it with the who-drinks section, not as a causal trial.
Why sugar calms and BMI does not

Known diabetes is a hard switch into diet soda. Pull those people out and HbA1c mostly falls. Weight is messier. Goals, history, unmeasured lifestyle. Association without a substitution trial is not “diet soda causes obesity.”

06

Who drinks diet soda

This is the mechanism. Skip it and the crude charts look like proof of cause.

Diabetes (self-report)

31% vs 14%

Diet-only vs neither. Selection, not a random sip.

Mean BMI

31.5 vs 28.9

Heavier on average before any model speech.

Mean age

55 vs 51

Slightly older. Matters for lifetime cancer history.

How diet-only adults differ from people who drank neither soft drink type
Love plot. Look at diabetes, BMI, income, age. That is who shows up in the diet-soda column.
What best predicts diet soda use in a simple machine learning model
What predicts diet-soda use. Diabetes, income, waist/BMI, age. If health predicts the drink more than the drink predicts health, the headline arrow is often backwards.
ML note

Classifier AUC about 0.66 weighted and 0.68 unweighted. That is prediction quality, not causation. Adding diet-soda features barely improves BMI prediction (ΔR² about 0.007). Small number, big point: soda flags are weak BMI predictors next to the rest of the file.

07

Models: what I ran and what held

Why model at all? Because a mean difference is cheap drama. A model is me asking: is the gap still there after I hold fixed the obvious confounders? And for diabetes markers: does it survive after I remove people who already know they have diabetes?

In one breath

I did not prove diet soda causes or does not cause anything. I ran a stress test on viral claims with public data. Crude scare that dies after controls: treat as selection noise. Gap that stays after controls: real association worth respecting, still not a trial. Cancer death that is not significant with ~27 events in the diet group: weak test, not a safety certificate.

β (beta) Average difference in the outcome for diet-only vs neither after the listed controls. BMI β +2.5 ≈ 2.5 BMI units higher.
HR (hazard ratio) Relative rate of the event over follow-up. HR 1 = same rate. CI that crosses 1 = not significant here.
S0 / S3 / S5 Crude → full lifestyle controls → same but drop known diabetes. A ladder, not three different stories.
What models can do Stress-test a claim. They cannot replace a randomized trial or lifelong intake history.

The ladder (S0 → S3 → S5)

StepWhat I didWhy
S0 crude Diet-only vs neither. Almost no controls. What a simple chart shows.
S3 lifestyle Add age, sex, race/ethnicity, education, income, smoking, Day-1 calories. Diet-soda drinkers are not demographically random. Line them up.
S5 no known diabetes Same as S3, but only people who do not self-report diabetes. Removes the reverse switch: already diabetic, already on diet soda.
Cox cancer death Time from exam to cancer death (or censor). Diet-only vs neither. Age, sex, smoking. Harder than “ever had cancer” self-report. Still short on diet-group events.

Scoreboard: what held

Claim under testWhat the model didWhat held
Diet soda wrecks blood sugarHbA1c: crude → lifestyle → drop known diabetes Mostly fell. +0.30 → +0.05. Mostly selection / reverse switch.
Diet soda makes you fatBMI: crude → lifestyle → drop known diabetes Stayed. About +2.5 (still +2.3 without known diabetes). Association, not cause proven.
Diet soda gives you cancer (death)Cox HR for cancer death Not significant. HR 0.77 (CI 0.51-1.15), p≈0.20, ~27 diet-group deaths.
Diet drinkers = everyone elseProfile gaps + who-drinks prediction model Busted. Diabetes, BMI, income, age separate them. Soda flags barely help predict BMI.
OutcomeStepContrastEstimate
BMIS0 crudediet-only vs neitherβ +2.53
BMIS3 lifestylediet-only vs neitherβ +2.50
BMIS5 no known diabetesdiet-only vs neitherβ +2.26
HbA1cS0 crudediet-only vs neitherβ +0.302
HbA1cS3 lifestylediet-only vs neitherβ +0.303
HbA1cS5 no known diabetesdiet-only vs neitherβ +0.045
Cancer deathCox PHdiet-only vs neitherHR 0.77 (0.51-1.15)
How to read the numbers here

BMI β about +2.5: diet-only adults sit that many BMI units higher than neither, after the listed controls. HbA1c β about +0.05: after dropping known diabetes, the remaining gap is small. Cancer HR 0.77: point estimate below 1, but the CI crosses 1 and events are few. Do not translate that into “protective” or “safe.” Standard errors are approximate (weights yes, full survey design variance no). Tiny p-values on continuous models are too flattering.

Spec curve and cycles

One model can be a one-off. I also show BMI across several covariate sets and across NHANES cycles so the weight result is not a single formula trick.

BMI specification curve across covariate sets
BMI multiverse. Same story under different control sets. Not one magic p-value.
Mean BMI by beverage group across NHANES cycles
Not one Kaggle year. Pattern across 2011-2018.

Dose, blood pressure, missingness

About 90% of adults have zero diet soft drinks on Day-1 recall. Continuous “per serving” models mix any-vs-none with dose among drinkers. Be careful. Triglyceride models are on log(TG). Single exam BP. Meds only partly handled.

Histogram of diet soft drink servings among Day-1 consumers
Dose among consumers. Zeros out of this plot.
Systolic blood pressure by beverage group
SBP crude view. Fair-fight adjusted numbers live in the ladder CSV.
Missingness of key outcomes in the analytic sample
Missingness. Fasting labs are thinner by design. Know that before you model.
08

How I built this

Who did the work, with what tools, and on what brief.

I pulled NHANES 2011-2018 exam, diet, and lab files. Mapped soft drinks with USDA WWEIA codes (7102 diet, 7202 regular). Linked public mortality. Built an analysis-ready sample of 19,384 adults. Ran weighted models, a small who-drinks check, a cancer pack (agencies, dose chart, age bands, survival model), and this page. Headline numbers load from the same tables I checked against the outputs.

Grok 4.5

I used Grok 4.5 as a coding partner for downloads, cleaning, models, charts, and HTML. It did not invent the NHANES rows. I still matched the big numbers to the result tables. If something is wrong, that is on me for shipping it.

First super prompt I used (compressed)
Build a portfolio-grade public Myth Lab on diet soda / artificial sweeteners. Use NHANES 2011-2018, USDA WWEIA diet soft drinks vs regular soft drinks, and NCHS linked mortality. Engineering first: clean multi-cycle sample, exclusive soda-type groups, documented weights. Test myths people actually post: cancer / WHO / aspartame, weight, diabetes, selection, microbiome if untestable say so. Verdict ladder: BUSTED, NUANCED, association only, UNTESTABLE HERE. No industry funding. No fake certainty. No “proved safe forever.” Ship charts, model ladder, cancer module, and a public write-up a coworker can defend in five minutes.

That brief turned into the repo you can reproduce below. Later prompts tightened language, fixed weight bugs, and built this article shell after an age_myth style pass.

09

Data and reproduce

NHANES continuous 2011-2018. USDA WWEIA. NCHS public Linked Mortality File.

PieceWhat I used
ExposureWWEIA 7102 vs 7202, Day-1, exclusive soda-type groups
SampleAdults 20+, not pregnant, reliable Day-1 diet, MEC weight > 0 · n=19,384
Groupsdiet-only 1,744 · regular-only 5,934 · both 148 · neither 11,558
Mortality285 cancer deaths · 1198 all-cause · ~27 cancer deaths in diet-only
WeightsMulti-cycle MEC normalized (÷4). Binary GLM: normalized weights, never raw MEC as fake sample size
MoneyNo beverage industry funding. Public CDC / USDA / NCHS files
cd diet-soda-analysis
python -m src.data.build_analysis_dataset
python -m src.analysis.run_eda
python -m src.analysis.run_models
python -m src.analysis.run_ml
python -m src.analysis.run_cancer_module
python -m src.analysis.run_verdicts
python scripts/handoff_smoke.py
python scripts/build_html_report.py

# outputs/tables/report_facts.json
# docs/myth_verdicts.md

Open index.html from the project root so chart paths work. Or rebuild with --embed for a single portable file.

10

Limits

Read this before you weaponize a screenshot.

Line I would post

Diet-soda drinkers are older, heavier, and about twice as diabetic. That selection writes the crude scares. Blood sugar mostly calms after known diabetes is out. BMI stays about +2.5 as association. Cancer slogan fails. HR 0.77 with ~27 diet-group cancer deaths is not a safety certificate.

Pair 31% vs 14% with the switch story. Pair +0.30→+0.05 with the diabetes exclusion. Pair the cancer HR with the event count. Always both.

Home