Skip to content

Draft

Worked through on a few cases; numbers may change.

A regression that carries rounding uncertainty through

Acute kidney injury after surgery against intraoperative urine output (mL/kg/h), fitted once on the recorded numbers and once per draw from the true-value distributions: the rounding moves 14% of cases across the oliguria threshold, but widens the confidence interval of the cohort's regression by at most 4%.

Side value
Status draft
Variables Intraoperative urine output, Weight, Anaesthesia duration, Preoperative creatinine, Creatinine
Studies Rounding and heaping of intraoperative urine output, Rounding and heaping of weight, How the anesthesia start time was charted, How the anesthesia end time was charted, Bias in charted intervals, Package validation and Monte Carlo cache

The question

Is lower intraoperative urine output associated with acute kidney injury after surgery, and how much of the uncertainty in the answer comes from the rounding of the inputs?

Inputs

Each input links to its measurement page: how it is timed, how its value was recorded, and how uncertain both are.

Input Unit What it is
Intraoperative urine output mL Intraoperative urine output (clinical table).
Weight kg Weight (clinical table).
Anaesthesia duration min Anaesthesia duration (derived table).
Preoperative creatinine mg/dL Preoperative creatinine (clinical table).
Creatinine mg/dL Creatinine (lab table).

Why the atlas changes the answer

The exposure is a ratio of three rounded numbers (Urine output in mL/kg/h as a distribution): urine output heaped on 50 and 100 mL, weight, and anaesthesia times on 5- and 10-minute marks. Rounded inputs act like measurement error (Carroll et al. 2006): they can flatten a slope (regression dilution), and an interval computed from the recorded numbers leaves their uncertainty out. Fitting the model once per draw from the true-value distributions and combining the fits by Rubin's rules, as in multiple imputation (Rubin 1987), carries it through.

Data

The 3,042 cases with a positive urine output, a weight, both anaesthesia times, a preoperative creatinine and at least one creatinine in the 48 hours after the end of surgery. 225 (7.4%) have acute kidney injury by the KDIGO creatinine criterion (Kidney 2012): the highest postoperative creatinine at least 0.3 mg/dL above the preoperative value, or at least 1.5 times it. Postoperative creatinine is reported to 0.01 mg/dL and is used as recorded.

Steps

  1. For each case, draw 200 true values of urine output, weight, anaesthesia duration and preoperative creatinine from the pinned vitaldb-resolution library (v0.6.0), and form the urine output rate for each draw.
  2. Fit three unadjusted models on the recorded numbers (naive): A. logistic, kidney injury against the rate (per 1 mL/kg/h, capped at 5); B. logistic, kidney injury against oliguria (rate below 0.5 mL/kg/h); C. linear, log of the highest postoperative over the preoperative creatinine against the rate.
  3. Fit the same three models once per draw (kidney injury recomputed with that draw's preoperative creatinine), and combine the 200 fits by Rubin's rules: the estimate is their mean, and the variance adds the spread between draws to the mean within-fit variance.
  4. Compare: the estimate, the 95% interval, and the share of the total variance that comes from the rounding (the between-draw part).

Results

No association, either way. The models are unadjusted, so the clinical answer is not the point; it is the same with and without the rounding:

Model Recorded numbers Carried through (200 draws) Share of variance from rounding
A. Odds ratio per 1 mL/kg/h 1.05 (0.91 to 1.21) 1.04 (0.90 to 1.20) 0.7%
B. Odds ratio if oliguric 0.94 (0.71 to 1.25) 0.97 (0.72 to 1.31) 6.3%
C. Log creatinine ratio per 1 mL/kg/h −0.003 (−0.013 to 0.008) −0.003 (−0.013 to 0.007) 0.2%

Where the rounding shows. In 413 of the 3,042 cases (14%) the draws put the rate on both sides of 0.5 mL/kg/h, so oliguria is not a fixed property of those cases. That is what widens model B's interval (by 4%) and moves its estimate. With the rate as a number (A and C), each case's uncertainty is small next to the spread of rates between cases, and the rounding adds almost nothing. The fit on the recorded numbers in model A lies at the edge of the fits on the draws: rounding shifts it slightly, though far less than its confidence interval. Kidney injury itself changes with the preoperative creatinine's rounding in only 7 cases.

Three panels each with a narrow histogram and two horizontal confidence-interval bars of nearly equal width; the middle panel's histogram is wider.
Three regressions of kidney injury or creatinine change on urine output, each fitted 200 times on draws from the true-value distributions (histogram of the 200 estimates), combined by Rubin's rules (blue, 95% interval) and fitted once on the recorded numbers (grey). The draws' spread is narrow next to each interval, except for the oliguria model (B), where 14% of cases cross the threshold between draws.

Does the threshold matter? Moving the oliguria threshold from 0.2 to 1.5 mL/kg/h changes how many cases cross it between draws (6% to 14%), but never gives the rounding more than a small share of a cohort's uncertainty:

Threshold (mL/kg/h) Oliguric (recorded) Cases crossing between draws Rounding's share of the variance: prevalence Rounding's share of the variance: odds ratio
0.2 7.2% 8% 11% 5%
0.3 15.9% 12% 11% 8%
0.5 35.5% 14% 8% 6%
0.75 55.1% 12% 5% 5%
1.0 67.7% 10% 5% 5%
1.5 83.1% 6% 4% 4%

Nor do the subgroups where the rounding is worst: among cases with a round 50 or 100 mL (200 mL or less), 42% cross 0.5 between draws, yet the rounding is still only 18% of the variance of their prevalence. Each case's error is independent and nearly symmetric, so over hundreds of cases it cancels; for one case it does not (Oliguria labels for a prediction model).

Population and individual

Random: cancels over a cohort.

The cohort Carried through 200 draws, the rounding is under 8% of the variance at any threshold: the cohort's answer does not change.
Each patient 14% of patients sit on both sides of 0.5 mL/kg/h between draws, which is what the cohort averages over.

Takeaways

  • Carry rounding through a regression by fitting once per draw and combining with Rubin's rules; the fraction of the variance that comes from the draws says how much the rounding matters for that question.
  • A threshold is where rounding matters most: dichotomising the exposure (oliguria) gave rounding ten times the weight it has with the rate as a number.
  • For a cohort-level question VitalDB's rounding is small next to the spread between patients, whatever the threshold, because independent errors cancel; only a systematic error would not. For a label or decision per patient it matters (Oliguria labels for a prediction model, Urine output in mL/kg/h as a distribution).

Limitations

  • The draws come from the distribution of the true value given the recorded one, without using the outcome. For measurement-error correction the imputation should also condition on the outcome (Cole et al. 2006); without it the combined slope is pulled slightly towards zero. Here the rounding is small enough that this hardly matters.
  • Unadjusted models, and creatinine-based kidney injury only (no urine criterion, no baseline other than the preoperative value). The clinical question needs adjustment for case mix.
  • The inputs are drawn independently; the duration's two ends share the anaesthesia record's clock.

Studies it relies on

Study Date Status Summary
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 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.
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.
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.
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.
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.

Reproduce it

python examples/regression_with_rounding.py --resolution <vitaldb-resolution at the pinned commit> \
    --root <VitalDB release> --out out/regression --draws 200
Under a minute on a laptop.