Skip to content

Body mass index, derived from its inputs

Body mass index computed from the posteriors of height, weight.

Date 2026-10-18
Status current
Methods Rounding, heaping and value resolution
Variables Body mass index

Background

  • BMI is computed, not entered. Every one of the 6,388 recorded values equals weight ÷ (height/100)² rounded to 0.1.
  • So it has no rounding behaviour of its own, and the recorded value says nothing about true height and weight beyond those two fields.

Data

  • All 6,388 recorded BMI values, recomputed from height and weight as a check.
  • Inputs come from height.model.json and weight.model.json.

Method

  • No rounding model. BMI is a derived variable (kind: derived, evaluated by derived_samples).
  • For each case, height and weight are drawn from their own posteriors (sex, age, emergency status, department), optionally with measurement variability, and BMI is computed per draw.
  • The recorded BMI is kept only as a consistency check.

Results

  • With measured inputs, BMI is known to about ±0.02 from the recording alone; measurement variability widens that to about ±0.4.
  • A possibly written-in 160.0 cm height can come from the nearest-10 cm mode, so BMI spreads from 22.5 to 24.8 (95%).
  • With variability, the self-report bias for older women (heights over-reported by about 1.3 cm at 60–69) moves the centre up to about 23.9 and widens the interval to 22.0–26.3.
  • Over the whole release (6,388 records, the library's default call: rounding only, no measurement variability), the median 95% width of the true BMI is 0.054 kg/m² and the 90th centile 0.31. The widths fall into three groups set by how height and weight were written: both with decimals (4,562 records, median 0.050), height or weight in whole cm or kg (1,487, median 0.27), and heights on a 5 cm mark (339, median 1.8). The widest 210 records all have such a height, consistent with the model reading them as possibly written in.

Discussion

  • The API returns BMI as a distribution built from the height and weight distributions for the same case, not from the recorded BMI.
  • The same approach is planned for eGFR, ICU days and length of stay.

Limitations

  • Height and weight are drawn independently given sex and age, so their correlation is ignored. This matters only when an input posterior is wide.

Model

Model file: …/models/bmi.model.json. Read from the pinned snapshot of vitaldb-resolution at commit bb03ddfc8a (2026-10-18).

Recorded resolution 0.1 (nearest), as stored
Covariates sex, age, emop, department
  • Derived: weight / (height/100)^2

Code

Figures

Left, a stacked histogram of interval widths on a log scale with three separate humps. Right, a scatter of width against recorded BMI showing three horizontal bands that rise slowly with BMI.
How wide the true BMI is, record by record, from the rounding of height and weight alone (no measurement variability). Left: the 95% interval width over all 6,388 records, coloured by how the inputs were written. Right: the same widths against the recorded BMI. The three bands are the three ways of writing the inputs; within each, the width grows with BMI because it scales with weight over height squared.

Tags: generated, vitaldb-resolution