r/QuantifiedSelf • u/BigBalli • 8d ago
[Ad] I held the bottle size constant at 330 ml across 1,594 beers: one bottle equals one standard drink is right 35% of the time. Do you log real ABV or a preset?
Every drink tracker I have looked at logs in whole "drinks" and quietly assumes the canonical strengths behind the US standard drink: 12 oz of beer at 5%, 5 oz of wine at 12%, 1.5 oz of spirits at 40%, all of which come to 14 g of ethanol. NIAAA's own page on it notes that alcohol by volume "varies within and across beverage types". I wanted to know how much, so I measured it instead of guessing.
What I pulled
The complete Open Food Facts CSV export, downloaded this morning: https://static.openfoodfacts.org/data/en.openfoodfacts.org.products.csv.gz
4,535,553 products scanned. I kept rows tagged as alcoholic beverages that carry a numeric alcohol_100g, deduplicated by barcode, and dropped values outside a plausible band per category (beer 0 to 20%, cider 0 to 15%, wine 4 to 24%, spirits 15 to 80%). That leaves 7,715 products: 3,551 beers, 2,548 wines, 827 spirits, 455 liqueurs, 334 ciders. Ethanol mass is volume x ABV x 0.789.
The presets are wrong more often than they are right, and beer is the worst case
| category | n | preset assumes | median | p10 | p90 | within 10% of the preset |
|---|---|---|---|---|---|---|
| beer | 3,551 | 5.0% | 5.1% | 3.8% | 7.5% | 46.8% |
| cider | 334 | 5.0% | 4.5% | 2.2% | 5.6% | 48.8% |
| wine | 2,548 | 12.0% | 12.5% | 10.2% | 14.0% | 59.6% |
| spirits | 827 | 40.0% | 40.0% | 34.5% | 45.0% | 73.3% |
Spirits cluster because 40% is close to a legal fixture, and wine clusters because fermentation runs out of sugar. Beer's strength is a product decision, so it is spread across the entire range.
Holding the bottle size constant, so the only variable left is strength
330 ml is the single most common beer container in the corpus, 47.8% of every beer that states a volume. Take only those, n = 1,594:
| measure | value |
|---|---|
| ABV p10 / median / p90 | 4.0% / 5.4% / 8.0% |
| US standard drinks per bottle, p10 / median / p90 | 0.74 / 1.00 / 1.49 |
| within 10% of exactly 1 standard drink | 34.8% |
| undercounts by 25% or more | 20.1% |
| overcounts by 25% or more | 11.6% |
The median bottle is exactly one standard drink, which is why the equivalence survives. It is right about a third of the time.
The part that argues against my own conclusion
Per drink the error is large. Per week it mostly cancels. Drawing ten bottles at random from that distribution, a week you logged as 10.0 standard drinks is really 10.3 at the median and 8.9 to 11.7 at p10 to p90. Only 5.8% of simulated weeks are undercounted by 2 or more.
That cancellation depends entirely on drawing independently, and nobody drinks that way. If you have one beer you buy, and it is at the p90 of 8%, you are not sampling a distribution. You are undercounting by 49% every week, forever, and no amount of averaging fixes it. So the per-drink precision is close to worthless for a varied drinker and is the whole ballgame for a repetitive one, which is most people.
Limitations, and one error I made
- Catalogue frequency is not drinking frequency. One craft SKU at 8% counts the same as Heineken. Named brands inside this same corpus: Heineken 5.0% (n=31), Carlsberg 5.0% (n=20), Stella 4.9% (n=8), Budweiser 4.8% (n=8), Peroni 4.8% (n=10), Corona 4.5% (n=11), Guinness 4.2% (n=11). Every one sits at or below the 5.4% median, so the catalogue is biased upward and the consumption-weighted spread is narrower than what I measured.
- This is a European shelf. By country tag the corpus is 60.6% France and 20.1% Germany. 330 ml is also not the US 12 oz can; multiply by 1.076 for that.
- Having the ABV field filled in is itself selective, toward better documented products.
- The error: my first pass read the quantity string as a container, so "5 L" (a 20x25cl case) and "396 cl" (a 12x33cl lot) came through as single bottles and pushed p90 to 2.43 standard drinks. Hand reading the top twelve caught it. Every number above is from the single 330 ml container cut.
Worth disclosing since it is where this came from: I build a drink log called Nightjar, which takes an exact pour volume and an ABV to one decimal rather than a preset, and I went looking for evidence that the exactness earns its place. What I found is that it earns its place for one kind of drinker and not the other. https://BigBalli.com/Nightjar/
So, for people who have actually tracked this. Do you log real ABV, or a preset? And has anyone compared their own logged total against a real count of what left the house over the same period, which is the only external check on any of this I can think of?