Rounding, heaping and value resolution¶
How far a recorded number is from the true one because of how it was written down: the resolution it was recorded at, and the coarser values people round to.
Studies¶
| Study | Date | Status | Summary |
|---|---|---|---|
| Value resolution of every signal | 2026-10-19 | draft | How finely every waveform and numeric track in the release records its values. The SNUADC waveforms are 10-bit codes, though VitalRecorder's documentation describes the SNUADC as 12-bit; Primus waveforms use about 10 bits of 12; BIS EEG is a 16-bit grid of 0.05 µV. Numerics are 32-bit floats on decimal grids of 1, 0.1, 0.01 or 0.001, one per track; settings sit on coarser grids of 10 or 100. |
| How the anesthesia end time was charted | 2026-10-18 | current | The charted anesthesia end time is a mixture of 4 ways of writing a clock time (ceiling_30min, ceiling_10min, ceiling_5min, clock_minute), modelled as an offset from a device time. |
| How the anesthesia start time was charted | 2026-10-18 | current | The charted anesthesia start time is a mixture of 5 ways of writing a clock time (nominal_0740, nominal_0730, nearest_10min, nearest_5min, clock_minute), modelled as an offset from a device time. |
| Body mass index, derived from its inputs | 2026-10-18 | current | Body mass index computed from the posteriors of height, weight. |
| Rounding and heaping of intraoperative crystalloid | 2026-10-18 | current | Recorded intraoperative crystalloid is a mixture of 3 rounding modes (100 mL, 50 mL, 10 mL (base)); the model gives the true value's distribution for each record. |
| Rounding and heaping of estimated blood loss | 2026-10-18 | current | Recorded estimated blood loss is a mixture of 5 rounding modes (preferred small values, 500 mL, 100 mL, 50 mL, 10 mL (base)); the model gives the true value's distribution for each record. |
| Rounding and heaping of intraoperative urine output | 2026-10-18 | current | Recorded intraoperative urine output is a mixture of 4 rounding modes (100 mL, 50 mL, 10 mL, 5 mL (base)); the model gives the true value's distribution for each record. |
| How the operation end time was charted | 2026-10-18 | current | The charted operation end time is a mixture of 4 ways of writing a clock time (floor_30min, floor_10min, floor_5min, clock_minute), modelled as an offset from a device time. |
| How the operation start time was charted | 2026-10-18 | current | The charted operation start time is a mixture of 3 ways of writing a clock time (nearest_10min, nearest_5min, clock_minute), modelled as an offset from a device time. |
| Instrument accuracy and calibration | 2026-10-18 | open | The atlas describes how each value was recorded, but not yet how accurate the instrument behind it was. That needs the calibration and quality-control records of every device, which are not in the release. |
| Rounding and heaping of height | 2026-10-13 | current | Recorded height is a mixture of 5 rounding modes (tens, whole_cm, half_cm, round_up_from_x9, measured_0.1); the model gives the true value's distribution for each record. |
| Rounding and heaping of propofol bolus | 2026-10-13 | current | Recorded propofol bolus is a mixture of 3 rounding modes (preferred values, 50 mg, 10 mg (base)); the model gives the true value's distribution for each record. |
| Rounding and heaping of weight | 2026-10-13 | current | Recorded weight is a mixture of 3 rounding modes (whole_kg, scale_0.1, scale_0.05); the model gives the true value's distribution for each record. |
| Admission, discharge and length of stay | 2026-10-13 | current | Admission and discharge are dates at 1-day resolution, so length of stay is a derived triangular distribution, and discharge days show a weekly pattern rather than rounding. |
| Package validation and Monte Carlo cache | 2026-10-13 | current | The vitaldb_resolution package returns a status for every value in the dataset, reproduces each fitted likelihood, and can precompute every posterior for fast Monte Carlo draws. |
| Heaping screen of all variables | 2026-10-13 | current | Every hand-entered clinical value and every lab analyte was screened for mixed resolution and heaping, to decide which need a rounding model and which need only a registry entry. |
| Computed lab values on reachable grids | 2026-10-13 | current | PT %, INR and fibrinogen are computed from a finer measurement, so some integers are unreachable and a heaping screen misreads the comb as heaping. |
| Haematocrit from two analysers | 2026-10-13 | current | Apparent heaping in haematocrit is two analysers with different resolutions, identifiable record by record from the co-timestamped panel. |
| Pre-operative PaO₂ decimal rule | 2026-10-13 | current | Pre-operative PaO₂ in the clinical table mixes 0.1 and 1 mmHg records, so its resolution is set per record by whether a decimal is present. |
| What the lab timestamp marks | 2026-10-13 | current | VitalDB's lab time is a per-specimen timestamp: not the draw, and not the result. Blood gases are stamped 3–12 minutes after the draw, central-lab panels about 8–24 minutes after it, and the result follows a turnaround the release does not record. |
| Charted-time clock reconstruction | 2026-10-13 | current | The absolute clock time of every event can be recovered from the admission date, which makes minute-of-hour distributions possible despite de-identification. |
| Bias in charted intervals | 2026-10-13 | current | Charted intervals are biased because each end is rounded with a different anchor, and their per-case uncertainty is large relative to short intervals. |
| Imputed times, conformance failures and exclusion rules | 2026-10-13 | current | About one in twelve op ends was set from the recording rather than charted, and a small set of times fail basic conformance checks; all are encoded as exclusion rules. |
| What lab timestamps mark | 2026-10-13 | superseded | Merged into "What the lab timestamp marks" on 18 October 2026; kept so old links still work. The original finding: central-lab timestamps most likely mark specimen receipt in the lab, about 10 minutes after the draw. |
| Bolus drugs as unit-dose counts | 2026-10-13 | current | Most bolus drug totals are exact counts of standard doses, not rounded estimates; propofol is the exception, and zeros are ambiguous. |
| Colloid container rules | 2026-10-13 | current | Colloid is a mix of products given in whole containers that depend on the operation, so values are treated as container counts rather than rounded volumes. |
| Blood products, age and ICU days | 2026-10-13 | current | Red-cell and plasma units, age and ICU days are not heaped and get registry entries with a few flags rather than rounding models. |
Observations from these studies¶
| Observation | Status | Summary |
|---|---|---|
| Anaesthesia record times on 5-minute marks are rounded up | established | An anaesthesia start or end entered on a 5-minute mark was rounded up to it: the event happened in the 5 minutes before, and on average a little earlier still. Clear for anaesthesia end; for anaesthesia start the margin is small, and the value model (How the anesthesia start time was charted) prefers rounding to the nearest mark. |
| Op end was filled in from the recording end in 537 cases | established | In 537 cases (8.4%) the op end is exactly 10 minutes before the end of the recording, so it was filled in rather than charted. These cases are concentrated in thoracic surgery and under sedation or spinal anaesthesia. |
| Primus waveform gains are wrong in every recording, for CO₂ or for AWP | established | Recordings store the Primus waveforms with one of three sets of scale factors. Checked against the Primus's own ETCO₂ and PIP numerics in all 6,388 recordings, CO₂ fits only 0.075 mmHg per code and AWP only 0.1 mbar per code with offset −20, so most recordings overstate CO₂ by a third, and the others overstate AWP by about 3% (950 recordings) or understate it about fourfold (26). |
| The lab time is neither the draw nor the result | established | VitalDB's lab timestamp marks the specimen (logged at the lab, or entered from a theatre analyser): minutes after the draw and before the result, whose time is not recorded. |
| CardioQ FLOW uses three scales (a segmented code) | likely | CardioQ FLOW values step by 1 from 0 to 255, by 2 from 256 to 510 and by 4 from 512 to 1016: 509 values, a 9-bit code whose step doubles in each upper segment, as in µ-law and A-law companding or a small floating-point format (an exponent and a 7-bit mantissa). Below 256, even values outnumber odd ones by 40 to 230 times. |
| Some ICU stays are longer than the postoperative stay | likely | In 37 cases the ICU day count reaches or exceeds the days from surgery to discharge, though the release describes it as the postoperative ICU stay. Most are emergencies with long stays before surgery, so the count probably includes ICU days before the operation. |
| Three lab analytes stop at a reporting limit | likely | Lactate is capped at 15.0 mmol/L, aPTT at 400.0 s, and ESR does not go below 2 mm/h: the values at the limit stand for "this or beyond", not for the number itself. |
| SNUADC values are 10-bit codes, though the device is documented as 12-bit | open | Every SNUADC channel in the release stores codes 0–1023 and nothing above: 10 bits, a step of 0.0098746 V. The VitalRecorder device list describes the SNUADC as a 12-bit converter. |
The approach¶
A recorded value is the true value passed through a rounding rule. When one rule applies to every record, the true value lies uniformly within half a step of the recorded one. Values written by people are usually heaped: most records follow a fine rule, but some are rounded to 5, 10 or 100, and a recorded 100 mL may be a measured 100 or anything from 50 to 150 rounded by hand.
The studies in this group fit each heaped variable as a mixture of rounding modes over a smooth density of true values. Each mode is a rule (nearest 5, nearest 10, rounded up ...) with its own share of the records. Given a recorded value, the model returns the distribution of the true value: a mixture of the intervals each mode could have produced it from, weighted by how likely each mode is to give that value. Values that a coarse mode can produce (multiples of 10, of 50 ...) therefore carry wider distributions than values only the fine mode produces.
Charted clock times are heaped the same way, as reported travel times are on multiples of 5, 15 and 30 minutes (Rietveld 2002, who fitted the rounding probabilities and used Bayes' rule to recover the true time). Here they are modelled as an offset from a device time recorded to the second, so the time side and the value side are one uncertainty. The general framework for such data is coarsening (Heitjan 1989, Heitjan and Rubin 1991), and heaping as a mixture of rounding behaviours follows Wang and Heitjan 2008.
The models are fitted and evaluated by vitaldb-resolution. The atlas reads them from a pinned snapshot of that library, so each page shows the fitted modes and shares without copying them.
References¶
- Heitjan DF. Inference from grouped continuous data: a review. Stat Sci. 1989;4(2):164-179. ↗
- Heitjan DF, Rubin DB. Ignorability and coarse data. Ann Stat. 1991;19(4):2244-2253. ↗
- Wang H, Heitjan DF. Modeling heaping in self-reported cigarette counts. Stat Med. 2008;27(19):3789-3804. ↗
- Rietveld P. Rounding of arrival and departure times in travel surveys: an interpretation in terms of scheduled activities. J Transp Stat. 2002;5(1):71-81. ↗