Inverse-Intensity Weighting for Informative Observation
Weighting of irregular longitudinal measurements using a model for observation or visit intensity, under assumptions linking the visit process, outcome, and observed history.
On this page
Weighting of irregular longitudinal measurements using a model for observation or visit intensity, under assumptions linking the visit process, outcome, and observed history. Use for irregular EHR or registry outcomes when visit timing depends on observed prognostic information and a credible observation model can address the dependence relevant to the target.
Definition and scope
Weighting of irregular longitudinal measurements using a model for observation or visit intensity, under assumptions linking the visit process, outcome, and observed history. The target population, use, and analysis remain protocol decisions; this card explains the choices and their consequences rather than approving a study.
Operational specification
Define the target trajectory or regression parameter, time scale, at-risk observation period, visit events, scheduled versus triggered observations, outcome collection, and covariates available before visits. Model the visit intensity rather than treating each recorded value as an equally sampled measurement of the population trajectory. Distinguish irregular visits from terminal dropout and treatment/censoring mechanisms.
Analysis and diagnostics
Construct observation histories including eligible people without later visits, fit a justified intensity model, and use compatible weighted estimating equations with appropriate dependence/variance handling. Assess conditional independence assumptions, weight stability, exposure-related measurement, and informative dropout. Adding every visit predictor can increase variance and does not guarantee an adequate adjustment set.
When NOT to use and common errors
Do not infer unbiasedness from balanced visit counts, omit all people with no follow-up by convenience, use current unobserved outcomes as if available to the visit model, or assume visit weighting also handles terminal dropout or unmeasured observation drivers.
Worked example and implementation boundary
Two synthetic recorded outcomes are 10 and 20, with observation intensities 1 and 2 in a common arbitrary unit. Calculate their inverse-intensity weighted mean as a teaching step. The teaching weighted mean is approximately 13.333, compared with unweighted 15. The intensities are assumed inputs, not a fitted observation model. 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
Two synthetic recorded outcomes are 10 and 20, with observation intensities 1 and 2 in a common arbitrary unit. Calculate their inverse-intensity weighted mean as a teaching step.
Dataset
Synthetic inputs with units defined in the scenario; no patient data.
| input | value |
|---|---|
| y1 | 10 |
| y2 | 20 |
| intensity1 | 1 |
| intensity2 | 2 |
Steps
Result
The teaching weighted mean is approximately 13.333, compared with unweighted 15. The intensities are assumed inputs, not a fitted observation model.
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.
y1 = 10
y2 = 20
intensity1 = 1
intensity2 = 2
result = (y1/intensity1+y2/intensity2)/(1/intensity1+1/intensity2)
assert abs(result - 13.333333333333334) < 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.
y1 <- 10
y2 <- 20
intensity1 <- 1
intensity2 <- 2
result <- (y1/intensity1+y2/intensity2)/(1/intensity1+1/intensity2)
stopifnot(abs(result - 13.333333333333334) < 1e-9)
print(result)
Illustrative example · execution not verified
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. SAS source is illustrative until executed in a compatible SAS runtime.
data worked_example;
y1 = 10;
y2 = 20;
intensity1 = 1;
intensity2 = 2;
result = (y1/intensity1+y2/intensity2)/(1/intensity1+1/intensity2);
put result=;
run;