QALY Accrual from Repeated Utility Measurements
Integration of health-state utility over time to estimate quality-adjusted life-years, using explicit measurement timing, interpolation, survival, and missingness assumptions.
On this page
Integration of health-state utility over time to estimate quality-adjusted life-years, using explicit measurement timing, interpolation, survival, and missingness assumptions. Use when repeated preference-based utilities and survival are available for within-study economic evaluation or as model-input evidence.
Definition and scope
Integration of health-state utility over time to estimate quality-adjusted life-years, using explicit measurement timing, interpolation, survival, and missingness assumptions. The target population, use, and analysis remain protocol decisions; this card explains the choices and their consequences rather than approving a study.
Operational specification
Specify the preference-based instrument and value set, time origin, utility dates, time units, interpolation between measurements, death date, and follow-up horizon. Distinguish a missing utility for an alive person from a post-death period assigned no living health time. Utility can be negative for states valued worse than dead; do not clip to zero unless the target explicitly requires a transformed outcome.
Analysis and diagnostics
For complete repeated observations, calculate area under the utility-time curve under a justified interpolation rule. In comparisons, account for baseline utility and design/causal adjustment; assess informative missingness and differences in measurement frequency. Report extrapolation after the last measurement separately from observed utility accrual and propagate uncertainty.
When NOT to use and common errors
Do not average utility scores without accounting for unequal intervals, multiply a non-preference-based symptom score directly by years, impute arbitrary terminal utilities, or assume an area-under-the-curve calculation removes confounding. Mapping to utility adds its own prediction uncertainty.
Worked example and implementation boundary
A synthetic patient is observed alive for one year with utilities 0.8 at baseline, 0.6 at six months, and 0.4 at one year. Use linear interpolation for this teaching calculation. The one-year area is 0.60 QALYs under the stated interpolation rule. It is not a treatment-effect estimate. The code performs that explicitly stated calculation with synthetic inputs. It is not a complete fitted analysis and does not demonstrate the identification assumptions, estimate sampling uncertainty, or certify application in another population.
Data-source and reporting requirements
Preserve the provenance, dates, units, and observation rule for each input. Claims capture services and transactions under observable benefits; absence of a record is not proof that an event or resource use did not occur. EHR and registry measurements depend on the collection process and may miss care outside the system. Linked sources add reconciliation and selection questions. Primary collection can improve a missing domain but still requires valid measurement and follow-up. Report which of these limitations affects the stated use, which evidence supports the chosen inputs, and what remains uncertain.
Worked example
Scenario
A synthetic patient is observed alive for one year with utilities 0.8 at baseline, 0.6 at six months, and 0.4 at one year. Use linear interpolation for this teaching calculation.
Dataset
Synthetic inputs with units defined in the scenario; no patient data.
| input | value |
|---|---|
| u0 | 0.8 |
| u1 | 0.6 |
| u2 | 0.4 |
| interval_years | 0.5 |
Steps
Result
The one-year area is 0.60 QALYs under the stated interpolation rule. It is not a treatment-effect estimate.
Trade-offs
Code example
Executed example · Python 3.11.15 · 2026-11-01T02:04:28+00:00
Self-contained synthetic calculation for the worked example only. Inputs and units are listed in the dataset; output is the displayed scalar. This does not fit the full study/model, estimate uncertainty, or select an analysis for a real study.
u0 = 0.8
u1 = 0.6
u2 = 0.4
interval_years = 0.5
result = ((u0+u1)/2+(u1+u2)/2)*interval_years
assert abs(result - 0.6) < 1e-9
print(result)
Executed example · Rscript (R) version 4.6.1 (2026-06-24) · 2026-11-01T02:04:28+00:00
Self-contained synthetic calculation for the worked example only. Inputs and units are listed in the dataset; output is the displayed scalar. This does not fit the full study/model, estimate uncertainty, or select an analysis for a real study.
u0 <- 0.8
u1 <- 0.6
u2 <- 0.4
interval_years <- 0.5
result <- ((u0+u1)/2+(u1+u2)/2)*interval_years
stopifnot(abs(result - 0.6) < 1e-9)
print(result)