Skip to content

Mortality tables

The province lives on a mortality preset unless you give it a table of your own. A supplied table becomes the basis: the province dies on it, and A/E is measured against it.

The CSV format

A table is a CSV with an age column and one-year death probabilities:

  • by sex, as qx_m and qx_f (or m and f, or male and female); or
  • pooled, as qx.

Rates may be probabilities (0.0124) or per mille (12.4): say so with ‰ in the header, or give values above 1. Commas, semicolons and tabs all work as separators.

bases/stressed-sa-2024.csv
age,qx_m,qx_f
0,0.028326,0.024522
1,0.001885,0.003986
2,0.000345,0.001037
3,0.000209,0.000352
4,0.000206,0.000151
...

Living on one

There are three ways:

  • in a province file: "mortality": "bases/your-table.csv", a path in the workspace;
  • in an experiment file: baseMortality for every run, or mortality for one arm (as a table inline);
  • from the province view: Exports › Import a mortality table (CSV) lives the province on one directly.

A table can also be written inline, in JSON:

"mortality": {
  "label": "My table",
  "source": "Where it comes from",
  "ages": [0, 1, 2, 3],
  "qx": { "M": [0.0283, 0.0019, 0.0003, 0.0002], "F": [0.0245, 0.0040, 0.0010, 0.0004] }
}

qx is { "M": [...], "F": [...] } by sex or { "pooled": [...] }, one value per age in ages (2 to 131 ages). An optional year says which calendar year the table is stated for.

What the engine does with it

  • Every age is filled. Between the ages a table gives, q is interpolated log-linearly; beyond them, the preset's shape is scaled to meet the table at its nearest age.
  • A pooled table keeps a sex differential: the preset's ratio between men and women is kept around it.
  • A table stated for another year is carried to the start of the run with the basis's mortality improvement.
  • Every death channel follows it. The table is read directly by the table channel; illness and maternal deaths, which are calibrated against the preset, are scaled age by age by the ratio of the forces of mortality, ln(1 − qtable) / ln(1 − qpreset), so total deaths follow the table in expectation. Road deaths are a traffic process and are not scaled.
  • It is part of the basis. The table is hashed into the basis like any parameter, so every export says which table a run lived on.

Checked on twelve seeds over four years: tables at 1.3 and 0.75 times the preset moved deaths by 1.25 and 0.78 times, and A/E against each run's own table matched the baseline's against the preset within its standard error (see Assumptions and provenance).