“Statistics are not just numbers; they are the way we make sense of the world.” — Sir David Spiegelhalter
This vignette outlines the philosophy of “Palatable Units” championed by David Spiegelhalter (Winton Professor for the Public Understanding of Risk, Cambridge). His core argument is that abstract probabilities (e.g., “0.00004% hazard ratio”) are meaningless to most people. To demystify risk, we must translate these into concrete, relatable units.
The goal of palatable units is to create a common currency for risk. This allows us to strip away the emotional “dread factor” from scary-sounding events and compare them rationally against mundane activities.
Abstract probabilities are hard to grasp. Spiegelhalter offers a concrete anchor (The Norm Chronicles, 2013; plus.maths.org):
Flip a fair coin 20 times. The probability of getting 20 heads in a row is 1 in 1,048,576 — approximately 1 micromort.
This is a mathematical constant (1/220), not an estimate. It requires no denominator, no external source, and no geographic adjustment. If you can imagine the surprise of 20 consecutive heads, you can feel the scale of 1 micromort.
For context, Gigerenzer (Calculated Risks, 2002) recommends expressing all probabilities as natural frequencies — counts in a defined population rather than percentages. “1 death per 1,000,000 exposures” is clearer than “0.0001% mortality rate.” This package follows that convention: every micromort value has a traceable numerator (deaths) and denominator (exposures).
A micromort measures acute hazard: the immediate probability of an event causing death.
The following table uses common_risks(), the package’s curated dataset of 62 acute risks with full provenance tracking:
Comparison: Riding a motorcycle for just 60 miles carries the same acute death risk (~10 micromorts) as undergoing general anesthesia. Using a standardized dataset enables apples-to-apples comparisons across activities.
While micromorts measure sudden death (Hazard), Microlives measure chronic attrition: the rate at which you are “using up” your life expectancy.
Using chronic_risks(), the package’s curated dataset of 22 chronic lifestyle factors:
Clarification: A value of -1 Microlife is a loss (attrition). It effectively means you are aging 30 minutes faster than normal. The
annual_effect_dayscolumn shows the cumulative impact over a year—a -1 daily deficit sums to ~7.5 days of lost life annually.
Spiegelhalter advocates for a Logarithmic Risk Ladder. This visualization helps placing rare risks (like asteroid impacts or terrorism) in context with daily risks.
For interactive exploration, use plot_risks_interactive() which provides:
Warning in RColorBrewer::brewer.pal(max(N, 3L), "Set2"): n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
Warning in RColorBrewer::brewer.pal(max(N, 3L), "Set2"): n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
Interactive risk ladder with hover details, category filtering, and zoom.
A key motivation for palatable units is correcting the perception gap between what we fear and what actually kills us.
According to Our World in Data, media coverage dramatically misrepresents actual causes of death:
| Cause of Death | Actual Deaths (%) | Media Coverage (%) | Ratio |
|---|---|---|---|
| Heart disease | 29% | ~2% | 0.07x |
| Cancer | 27% | ~5% | 0.19x |
| Homicide | 0.9% | ~39% | 43x |
| Terrorism | <0.01% | ~18% | >1800x |
Key insight: Heart disease and cancer cause 56% of deaths but receive only 7% of media coverage. Meanwhile, terrorism (causing 16 deaths in 2023) received 18,000× more coverage than its proportional death rate.
Micromorts and microlives provide a standardized currency to cut through emotional reactions:
The fear of flying after 9/11 led many Americans to drive instead, resulting in an estimated 1,600 additional road deaths—far exceeding the attack’s direct toll.
When news reports a “50% increase in cancer risk,” use this framework:
This contextualization reveals whether a “scary” headline represents a meaningful risk change.
While David Spiegelhalter focuses on concepts rather than specific software, the following R packages align with his mission of clear risk communication:
riskCommunicator: Designed for public health to provide interpretable effect measures (risk differences, number needed to treat) rather than abstract regression coefficients.ggplot2: The standard for creating custom visuals like Risk Ladders and icon arrays.micromort (this package): Specifically built to implement the palatable units framework.sessionInfo()
R version 4.6.1 (2026-06-24)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 26.04 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.32.so; LAPACK version 3.12.0
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
time zone: Etc/UTC
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] DT_0.34.0 targets_1.12.0 micromort_0.2.0
loaded via a namespace (and not attached):
[1] tidyr_1.3.2 plotly_4.12.0 sass_0.4.10 generics_0.1.4
[5] digest_0.6.39 magrittr_2.0.5 evaluate_1.0.5 grid_4.6.1
[9] RColorBrewer_1.1-3 fastmap_1.2.0 rprojroot_2.1.1 jsonlite_2.0.0
[13] processx_3.9.0 backports_1.5.1 secretbase_1.3.0 ps_1.9.3
[17] httr_1.4.8 purrr_1.2.2 viridisLite_0.4.3 crosstalk_1.2.2
[21] scales_1.4.0 lazyeval_0.2.3 codetools_0.2-20 jquerylib_0.1.4
[25] cli_3.6.6 rlang_1.2.0 units_1.0-1 cachem_1.1.0
[29] yaml_2.3.12 otel_0.2.0 tools_4.6.1 dplyr_1.2.1
[33] ggplot2_4.0.3 base64url_1.4 buildtools_1.0.0 vctrs_0.7.3
[37] R6_2.6.1 lifecycle_1.0.5 htmlwidgets_1.6.4 pkgconfig_2.0.3
[41] callr_3.8.0 pillar_1.11.1 bslib_0.11.0 gtable_0.3.6
[45] data.table_1.18.4 glue_1.8.1 Rcpp_1.1.1-1.1 xfun_0.59
[49] tibble_3.3.1 tidyselect_1.2.1 sys_3.4.3 knitr_1.51
[53] farver_2.1.2 htmltools_0.5.9 igraph_2.3.3 rmarkdown_2.31
[57] maketools_1.3.2 compiler_4.6.1 prettyunits_1.2.0 S7_0.2.2 micromort 0.1.0 | Git 94d93d2 | R 4.5.2 | Built 2026-04-18 12:20:56