Skip to content

Survival models in an imaging project

Tonight · ~25 min · read · energy: medium · setup: optional Python (lifelines)

Many clinically meaningful outcomes are not “yes/no” but “time until” — time until death, recurrence, progression. These are censored outcomes, and they need their own models and metrics. This lesson is the imaging-specific survival frame: the model, the metric, and the one question that makes a survival study honest.

The anchor: a patient alive at 5 years is not a “no event”

In a survival dataset, a patient who is still alive when follow-up ends has an unknown true survival time — we only know it exceeds the follow-up. That is right-censoring. Treating that patient as “event = no” (alive forever) or dropping them biases the estimate. Survival analysis exists to use both the patients with observed events and the censored patients correctly. NSCLC-Radiomics, which TRACE-CT uses, provides exactly this: Survival.time (possibly censored) and deadstatus.event.

The model and the metric

  • Kaplan–Meier — the non-parametric estimator of the survival curve from censored data. Use it to describe a cohort, not to predict an individual.
  • Cox proportional-hazards (Cox PH) — the workhorse regression for censored outcomes. It models the hazard (instantaneous risk of the event) as a function of covariates, under the proportional-hazards assumption (the hazard ratio between any two patients is constant over time). Check that assumption; if it fails, the model is misspecified.
  • C-index (concordance) — the survival analogue of AUROC: the fraction of comparable patient pairs for which the model ranks the longer survivor above the shorter. Like AUROC, it measures discrimination only — not calibration, not utility.

TRACE-CT’s dependency_compute_smoke.py _run_survival() exercises a lifelines CoxPHFitter + concordance index on synthetic data, and clinical_loader.py validates the NSCLC Survival.time / deadstatus.event fields — the plumbing for a real radiomics+survival task.

The honest question: value beyond the clinical baseline

This is the most important sentence in the lesson, and it generalises lesson 4’s baseline point:

A radiomic feature’s prognostic claim is honest only if it adds value beyond what the clinical record already provides.

Concretely: fit a multivariable Cox with clinical covariates alone (stage, histology, age), then add the radiomic feature(s), and test whether the added features improve the model (likelihood-ratio test, change in C-index with confidence intervals, etc.). A feature that is “prognostic” only because stage is prognostic — and stage is already in the record — adds nothing actionable. The imaging question is incremental: does the image carry information the clinical variables do not?

flowchart LR
    C["Cox: clinical only<br/>(stage, histology, age)"] --> C1["C-index / fit"]
    CR["Cox: clinical + radiomics"] --> CR1["C-index / fit"]
    C1 -.compare.-> Q{"incremental<br/>value?"}
    CR1 --> Q
    Q -->|yes, beyond baseline| OK["imaging is prognostic"]
    Q -->|no| NO["imaging adds nothing<br/>beyond the record"]

And, as ever: check the proportional-hazards assumption, report calibration of the survival predictions (not just the C-index), and demand external validation before any clinical claim (lesson 6).

Stop and think — then reveal

A radiomics survival study reports that a texture feature is “significantly associated with survival” (p < 0.05) in a Cox model that contains only the feature. The cohort includes patients of all stages. What crucial analysis is missing before you can call the feature prognostic?

A multivariable Cox that includes the clinical covariates (notably stage, plus histology/age). Without it, the feature’s apparent prognostic value may simply reflect that tumour stage is prognostic and the feature correlates with stage — i.e. it is a proxy for information already in the clinical record. The honest test is incremental: does the feature improve a model that already contains stage? Only a significant incremental improvement (with calibrated, assumption-checked, externally-validated survival predictions) supports a real prognostic claim.

What to retain

  1. Survival outcomes are right-censored; use Kaplan–Meier (describe) and Cox PH (model), and report the C-index (discrimination only).
  2. Check the proportional-hazards assumption; report survival calibration, not just the C-index.
  3. The honest question is incremental value beyond the clinical baseline — fit clinical-only vs clinical+radiomics Cox models and test the improvement.
  4. As ever: demand external validation before any clinical claim.

Next: put the whole chapter together — design the validation before you fit the model.