Figs. 4D and 4J · drawn here from 572 real TCGA lung patients
A Kaplan–Meier curve is a staircase. Every step down means something actually happened to somebody.
A survival curve is an odd chart. It is a staircase, not a line, and it
only goes down.
The staircase part is clear enough. Events (deaths) happen on particular days.
Nothing happens in between, so the curve must be flat there.
Smooth it into a curve and you have claimed that events trickled in continuously.
The downward part is clearer still. The dead do not come back.
Real TCGA lung adenocarcinoma data, split at the median TIL infiltration. Notice how close the two staircases stay.
PythonRuns in your browser
Move the cut point. Median, top 25%, top 10% — where you cut changes the picture.
Loading…
Play with the widget and an uncomfortable fact emerges:
moving the cut point changes how far the two curves separate.
This is the commonest trap in survival plots.
It is common practice to try several thresholds and publish the one that separates best.
A p-value chosen that way is no longer a p-value — it is the best of many attempts.
The honest way
cut at a pre-specified place such as the median. Or do not cut at all — put the continuous value into a Cox model
The common way
sweep the threshold for an optimum. If you do that, say so and correct for multiple testing
Cut at the top 10% and one side has 48 patients. Each step of the staircase then drops 2%.
PythonRuns in your browser
🤔 Check yourself
Why is a Kaplan–Meier curve drawn as steps rather than a smooth line?
Answer The flat parts are periods in which nobody died. Joining them smoothly draws events that never occurred.
🤔 Check yourself
Why is the right-hand end of a survival curve especially untrustworthy?
Answer With five people left, one death drops the curve 20%. That is why an at risk table under the axis became standard.
🤔 Check yourself
Several thresholds were tried and the best-separating one was published. What is wrong?
Answer This is optimal cutpoint selection. It is not wrong in itself, but it must be declared and corrected for. Undeclared, the result does not replicate.