Interval-Censored Survival Analysis
Methods for time-to-event outcomes whose event is known only to have occurred between two observation times, using the event interval rather than falsely assigning the event to a visit date.
On this page
A visit can show that an event happened since the previous visit, but not its exact date. Interval-censored analysis retains that uncertainty; ordinary Kaplan-Meier and Cox analyses assume an exact event time and answer a different problem.
Definition and likelihood
For participant i, the observed record is an interval (L_i, R_i]: event-free at L_i and event detected at R_i. The likelihood contribution is S(L_i) - S(R_i), not a point event at L_i, R_i, or their midpoint. A participant still event-free at last observation has right-censoring contribution S(L_i); an event present at the first assessment is left-censored. These distinctions matter for radiographic progression, periodic laboratory surveillance, dental eruption, and registry follow-up with scheduled assessments.
Pros, cons, and trade-offs
The Turnbull nonparametric maximum-likelihood estimator describes survival without forcing a parametric distribution. Semiparametric proportional-hazards or accelerated-failure-time models allow covariates but add model assumptions. Interval censoring preserves valid uncertainty and avoids arbitrary date imputation; wide or irregular intervals reduce precision, and no model can recover event timing that the observation schedule never resolves.
When NOT to use — and when interpretation is misleading
Do not call a claims service date the event date merely because it is the first observable code; that is an ascertainment rule requiring separate validation. Do not use ordinary right-censored Kaplan-Meier/Cox after converting every interval to its right endpoint or midpoint unless that approximation is explicitly justified and sensitivity-checked. Do not use an interval-censored model to repair informative visit attendance, unmeasured event status after data loss, or a competing death; those require an observation-process, censoring, or competing-risk decision.
Data-source caveats
In EHR data, interval endpoints should be linked to the actual test or visit dates, not note-signing dates. Claims often have billing dates rather than repeated negative assessments and therefore may not supply valid L_i boundaries. Registries can be strongest when visit schedules and missed assessments are retained. If visit frequency depends on worsening health, conditional independent observation/censoring is doubtful; report it and consider a sensitivity analysis rather than claiming the interval likelihood removes that bias.
Decision diagram
%%{init: {'themeVariables': {'fontSize': '16px'}, 'flowchart': {'nodeSpacing': 18, 'rankSpacing': 24}}}%%
flowchart TD
A["Preserve assessment times<br/>and observed event status"] --> B{"Event detected?"}
B -->|"Yes, by R"| C["Last negative: L<br/>First positive: R<br/>Event lies in (L, R]"]
B -->|"No, through L"| D["Right-censored at L<br/>Contribution: S(L)"]
C --> E["Interval contribution<br/>S(L) minus S(R)"]Worked example
Scenario
Four synthetic patients have imaging at days 30, 60, and 90 after therapy. The question is progression by day 90, with no treatment-effect claim.
Dataset
Progression is bounded by the last negative and first positive assessment; one patient is right-censored.
| person_id | last_negative_day | first_positive_day | status |
|---|---|---|---|
| 101 | 30 | 60 | progressed |
| 102 | 60 | 90 | progressed |
| 103 | 0 | 30 | progressed |
| 104 | 90 | event-free at day 90 |
Steps
Result
The day-90 observed progression proportion is 75%, but the survival curve between assessments is not identified by these four records; assigning every event to a visit date creates unsupported timing precision.
Trade-offs
Code example
Execution not verified · inspect inputs and dependencies before use
Fits the Turnbull-style nonparametric maximum-likelihood survival estimate for exactly the four interval records in the worked example. `Inf` right endpoint denotes right censoring.
library(icenReg)
d <- data.frame(L=c(30,60,0,90), R=c(60,90,30,Inf))
fit <- ic_np(as.matrix(d[c("L", "R")]))
summary(fit)
print(data.frame(left=fit$T_bull_Intervals[1,],
right=fit$T_bull_Intervals[2,], mass=fit$p_hat))
# Each observed interval has mass 0.25; event-free probability at day 90 is 0.25.
Execution not verified · inspect inputs and dependencies before use
Runnable data-preparation check. It creates interval endpoints but deliberately does not fit a Cox model, because common Python survival APIs assume exact/right-censored event times.
import pandas as pd
d = pd.DataFrame({'L':[30,60,0,90], 'R':[60,90,30,None]})
assert ((d.R.isna()) | (d.R > d.L)).all()
d['observation'] = d.apply(lambda x: f'({x.L}, {x.R}]' if pd.notna(x.R) else f'> {x.L}', axis=1)
print(d[['L','R','observation']]) # pass L/R to an interval-censoring-capable estimator
Execution not verified · inspect inputs and dependencies before use
Runnable preparation of interval endpoints for an interval-censoring-capable procedure or external validated implementation; PROC PHREG with a single event date is not an interval-censored fit.
data interval_input;
input id L R arm;
datalines;
101 30 60 0
102 60 90 1
103 0 30 0
104 90 . 1
;
run;
/* Preserve L and R; do not replace R with an exact event time for PROC PHREG. */
Citations
- [1]Turnbull BW. The empirical distribution function with arbitrarily grouped, censored and truncated data. Journal of the Royal Statistical Society Series B. 1976;38(3):290-295.
- [2]Zhang Z, Sun J. Interval censoring. Statistical Methods in Medical Research. 2010;19(1):53-70.