Micromorts provide a common currency for comparing risks that otherwise seem incommensurable. How dangerous is a CT scan compared to a skydive? How many chest X-rays equal a long-haul flight?
This dashboard explores these questions using atomic risk decomposition — breaking composite activities into their individual risk components so you can see exactly what you’re exposed to, and what you can mitigate.
How risky are the mundane things we do every day?
Everyday activities expressed in chest X-ray equivalents:
Everyday activities expressed in chest X-ray equivalents, showing that a long-haul flight equals ~50 chest X-rays while a banana is negligible.
Flying is a composite risk: crash + deep vein thrombosis (DVT) + cosmic radiation. The atomic decomposition reveals which components dominate at each duration, and which you can mitigate.
Cleveland dotplot decomposing flight risk into crash, DVT, and cosmic radiation components across 2h, 5h, 8h, and 12h flights, ordered by total micromorts.
Key observations:
How does DVT risk status change the total?
Full risk equivalence table with every activity expressed relative to a chest X-ray:
Medical imaging procedures vary enormously in radiation dose:
How many chest X-rays equal one CT scan?
Medical procedures ranked by chest X-ray equivalents, showing that a CT abdomen equals ~200 chest X-rays.
Which activities have hedgeable risk components?
Flight risk decomposition showing hedgeable vs non-hedgeable portions:
Flight risk decomposition by hedgeability: DVT risk (green, hedgeable via compression socks) vs crash and radiation (red, not hedgeable), ordered by total micromorts.
How does occupational radiation exposure compare across careers, and how do patient X-ray doses stack up? This section uses annual dose data from UNSCEAR and the LNT model (0.05 micromorts per mSv) to answer these questions.
Annual and cumulative radiation exposure across 11 profiles — occupational, passenger, and environmental:
Key insight: A 40-year airline pilot career accumulates ~6 micromorts of radiation — equivalent to just 60 chest X-rays.
How many patient X-rays equal a career of occupational exposure?
Key insight: 100 lifetime chest X-rays (10 micromorts) exceeds a 40-year X-ray technician career (2 micromorts) by 5x.
Cumulative radiation exposure over a 40-year career:
Cumulative radiation micromorts over a 40-year career for different exposure profiles, showing that 100 lifetime chest X-rays exceeds occupational exposure.
How do actual doses compare to ICRP regulatory limits?
Key insight: Actual doses are typically 5-20x below regulatory limits.
Exchange rates between 10 diverse activities. Read as: “one row-activity equals X column-activities.”
Atomic vs composite risks. The atomic_risks() function returns ONE row per risk component per activity. Activities not yet decomposed use component = "all_causes" (an honest placeholder indicating the breakdown is unknown).
Conditional risks. Some components depend on health profile (e.g., DVT risk varies by whether you have risk factors). The default profile assumes “healthy” values; use common_risks(profile = list(health_profile = "dvt_risk_factors")) for alternatives. Geographic conditioning can change equivalences dramatically: a snake bite is 0.5 mm in the US but 18.5 mm in rural Africa (37x). See the Data Reliability vignette for details.
Duration bucketing. Rather than encoding rate functions, flight risks are pre-computed at standard duration buckets (2h, 5h, 8h, 12h). Every number is directly citable — no hidden formulas.
DVT literature. DVT risk below 4 hours is negligible. Above 4 hours, risk rises nonlinearly. Compression socks + hydration + movement reduce DVT risk by approximately 60–70%. Sources: Lancet Haematology, Cochrane Reviews.
Medical radiation. The “(radiation)” label indicates that the radiation dose IS the risk. For invasive procedures (e.g., coronary angiogram), procedural risks (infection, bleeding) are separate components not yet decomposed.
Confidence levels. Each component carries a confidence rating: “high” (published meta-analyses), “medium” (single studies or expert consensus), “low” (extrapolated), “estimated” (order-of-magnitude).
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