Tutorials › Competing Risks and Multi-State Models › Illness-Death Transition-Probability Calculations

Transition Intensities and Probabilities · Tutorial 292 of 699

Illness-Death Transition-Probability Calculations

Learn to construct and multiply event-time transition matrices for an illness-death system, and to check the resulting probability estimates.

Advanced 13 min read

What You'll Learn

  • Set up the three-state illness-death transition matrix using a fixed state order.
  • Calculate event-time updates from transition counts and origin-state risk sets.
  • Multiply updates chronologically to estimate transition probabilities at selected times.
  • Account consistently for recovery, death, and censoring when checking risk sets.
  • Diagnose common errors in row sums, event-time updates, and matrix calculations.

From Transition Counts to Illness-Death Probabilities

In an illness-death system, individuals may begin healthy, develop an illness, recover, or die. A transition-probability matrix answers a specific question: for someone in each possible state at time \(s\), what is the probability of being in each state at a later time \(t\)? Calculating that matrix requires combining the observed transitions in their time order. A recovery matters because it can move probability back to the healthy state; death is absorbing.

Use state order \(0=\) healthy, \(1=\) ill, and \(2=\) dead. Transitions are permitted from healthy to ill or dead, and from ill to healthy or dead. There are no transitions out of state 2. The calculations below use the event-time product updates established in the earlier material on transition intensities and product integrals, specializing them to this three-state system.

Definition: Let \(Y_i(u)\) be the number at risk in state \(i\) immediately before event time \(u\), and let \(dN_{ij}(u)\) be the number of observed transitions from state \(i\) to state \(j\) at \(u\). The estimated transition-probability update at \(u\) has off-diagonal entry \(dN_{ij}(u)/Y_i(u)\), and diagonal entry \(1-\sum_{j\ne i}dN_{ij}(u)/Y_i(u)\) in row \(i\). For the illness-death system, the update is $$ \widehat B(u)= \begin{pmatrix} 1-\dfrac{dN_{01}(u)+dN_{02}(u)}{Y_0(u)} & \dfrac{dN_{01}(u)}{Y_0(u)} & \dfrac{dN_{02}(u)}{Y_0(u)} \\[6pt] \dfrac{dN_{10}(u)}{Y_1(u)} & 1-\dfrac{dN_{10}(u)+dN_{12}(u)}{Y_1(u)} & \dfrac{dN_{12}(u)}{Y_1(u)} \\[6pt] 0&0&1 \end{pmatrix}. $$

Each row describes the estimated one-step allocation of probability from its origin state at that event time. The transition matrix from \(s\) through \(t\) is obtained by applying the updates at event times \(u\in(s,t]\) in chronological order:

$$ \widehat P(s,t)=\widehat B(u_1)\widehat B(u_2)\cdots\widehat B(u_m), \qquad s<u_1<\cdots<u_m\le t. $$

Thus \(\widehat P_{ij}(s,t)\) estimates the probability of being in state \(j\) at time \(t\), conditional on being in state \(i\) at time \(s\), under the model and observation assumptions. With row-vector distributions, a distribution at \(s\) is updated by multiplication on the right: \(\boldsymbol\pi(s)\widehat P(s,t)\).

Assumptions and Calculation Checks

These calculations are meaningful under conditions that support estimating the transition probabilities from the observed risk sets. The process is modeled as Markov: conditional on the current state and time, the transition behavior does not additionally depend on the earlier path. Event times and states are observed accurately, and censoring is noninformative for future transitions conditional on the observed state and relevant modeled history. There must be people at risk in an origin state when its transition increment is calculated. The estimated competing transitions from a given state at an event time must together use no more than the available risk set, so the resulting diagonal probability is nonnegative.

Censoring removes an individual from later risk sets but is not itself a transition to death or another state. When checking state counts, a recovery decreases the ill count and increases the healthy count; an onset does the reverse. For example, if 7 people are healthy just before an event time, one onset and one death from healthy occur, and one person recovers from illness, the healthy count afterward is \(7-1-1+1=6\), not 5. Such bookkeeping is a useful check on the input counts, although the probability updates themselves use the risk sets immediately before each event time.

Worked Example: Sequential Onset, Recovery, and Death

Consider a hypothetical cohort of 10 people, all healthy at time 0, with no censoring before the listed events. At \(u_1\), 2 of the 10 healthy people develop illness. At \(u_2\), 1 of the 2 people at risk while ill recovers. At \(u_3\), the remaining ill person dies. Calculate the estimated transition matrices at these event times and the matrix through \(u_3\).

At \(u_1\), \(Y_0=10\), \(dN_{01}=2\), and \(dN_{02}=0\). The other states have no transitions at this time. Therefore,

$$ \widehat B(u_1)= \begin{pmatrix} 1-2/10&2/10&0\\ 0&1&0\\ 0&0&1 \end{pmatrix} = \begin{pmatrix} 0.8&0.2&0\\ 0&1&0\\ 0&0&1 \end{pmatrix}. $$

After that event there are 8 healthy and 2 ill people. At \(u_2\), \(Y_1=2\), with \(dN_{10}=1\) and \(dN_{12}=0\). Hence

$$ \widehat B(u_2)= \begin{pmatrix} 1&0&0\\ 1/2&1-1/2&0\\ 0&0&1 \end{pmatrix} = \begin{pmatrix} 1&0&0\\ 0.5&0.5&0\\ 0&0&1 \end{pmatrix}. $$

At \(u_3\), the one remaining ill person is at risk, so \(Y_1=1\) and \(dN_{12}=1\). The update is

$$ \widehat B(u_3)= \begin{pmatrix} 1&0&0\\ 0&0&1\\ 0&0&1 \end{pmatrix}. $$

The matrix through \(u_2\) is

$$ \widehat P(0,u_2)=\widehat B(u_1)\widehat B(u_2) = \begin{pmatrix} 0.8&0.2&0\\ 0&1&0\\ 0&0&1 \end{pmatrix} \begin{pmatrix} 1&0&0\\ 0.5&0.5&0\\ 0&0&1 \end{pmatrix} = \begin{pmatrix} 0.9&0.1&0\\ 0.5&0.5&0\\ 0&0&1 \end{pmatrix}. $$

For example, the first entry is \(0.8(1)+0.2(0.5)=0.9\), and the healthy-to-ill entry is \(0.8(0)+0.2(0.5)=0.1\). Applying the death update gives

$$ \widehat P(0,u_3)=\widehat P(0,u_2)\widehat B(u_3) = \begin{pmatrix} 0.9&0&0.1\\ 0.5&0&0.5\\ 0&0&1 \end{pmatrix}. $$

The first row estimates that, by \(u_3\), someone starting healthy has probability \(0.9\) of being healthy, 0 of being ill, and \(0.1\) of being dead. These are model-based transition-probability estimates, not a claim that every cohort will have those exact proportions.

Simultaneous Transitions and Risk-Set Bookkeeping

At one event time, several transition types can occur. Their counts are included together in the corresponding origin-state row. The update is built from the transition counts divided by the risk set just before that time; it is not calculated by pretending those tied transitions occurred in a known sequence. The next worked calculation includes simultaneous transitions from both the healthy and ill states.

Worked Example: Competing Transitions at the Same Times

In a hypothetical cohort of 12 initially healthy people, at \(u_1\) there are 2 onsets and 1 death from the healthy state. At \(u_2\), the risk sets are \(Y_0=9\) and \(Y_1=2\); from the healthy state there is 1 onset and 1 death, and from the ill state there is 1 recovery. At \(u_3\), \(Y_1=2\) and 1 ill person dies. Calculate the matrix through \(u_3\).

At \(u_1\), the healthy row is \((1-3/12,2/12,1/12)\), so

$$ \widehat B(u_1)= \begin{pmatrix} 3/4&1/6&1/12\\ 0&1&0\\ 0&0&1 \end{pmatrix}. $$

The stated risk sets at \(u_2\) are consistent with the transitions: after \(u_1\), there are 9 healthy, 2 ill, and 1 dead. At \(u_2\), two healthy people leave state 0 and one ill person recovers, leaving \(9-1-1+1=8\) healthy people; the one onset replaces the recovered person in the ill count, leaving \(2+1-1=2\) ill people. Thus \(Y_1=2\) at \(u_3\) is also consistent if there is no censoring between \(u_2\) and \(u_3\).

At \(u_2\), the healthy row is \((1-2/9,1/9,1/9)\), and the ill row is \((1/2,1-1/2,0)\). Therefore,

$$ \widehat B(u_2)= \begin{pmatrix} 7/9&1/9&1/9\\ 1/2&1/2&0\\ 0&0&1 \end{pmatrix}. $$

Multiplying the first two updates gives

$$ \widehat P(0,u_2)= \begin{pmatrix} 2/3&1/6&1/6\\ 1/2&1/2&0\\ 0&0&1 \end{pmatrix}. $$

For the first row, the three entries are \( (3/4)(7/9)+(1/6)(1/2)=2/3\), \( (3/4)(1/9)+(1/6)(1/2)=1/6\), and \( (3/4)(1/9)+1/12=1/6\). At \(u_3\), the ill row has a death fraction of \(1/2\), so

$$ \widehat B(u_3)= \begin{pmatrix} 1&0&0\\ 0&1/2&1/2\\ 0&0&1 \end{pmatrix}, \qquad \widehat P(0,u_3)= \begin{pmatrix} 2/3&1/12&1/4\\ 1/2&1/4&1/4\\ 0&0&1 \end{pmatrix}. $$

For instance, the healthy-to-dead entry is \( (2/3)(0)+(1/6)(1/2)+(1/6)(1)=1/4\). Each row sums to 1, a useful arithmetic check.

Censoring, Diagnostics, and Interpretation

Censoring changes who remains at risk at later times, but it does not add an off-diagonal transition to \(\widehat B(u)\). For each event time, use the risk set as it actually stands immediately before that time, after accounting for earlier events and censoring. The next example shows how to calculate with censored individuals while checking that recoveries are counted in the correct state.

Worked Example: Updates After Censoring

Suppose 20 hypothetical individuals start healthy. At \(u_1\), with \(Y_0=20\), 4 develop illness and 2 die. Between \(u_1\) and \(u_2\), 2 healthy and 1 ill individual are censored. At \(u_2\), the risk sets are therefore \(Y_0=12\) and \(Y_1=3\). From state 0, 2 develop illness and 1 dies; from state 1, 1 recovers and 1 dies. Calculate the matrix through \(u_2\).

At \(u_1\), the update is

$$ \widehat B(u_1)= \begin{pmatrix} 14/20&4/20&2/20\\ 0&1&0\\ 0&0&1 \end{pmatrix} = \begin{pmatrix} 0.7&0.2&0.1\\ 0&1&0\\ 0&0&1 \end{pmatrix}. $$

The stated risk sets at \(u_2\) follow the bookkeeping: after \(u_1\), there are 14 healthy and 4 ill; censoring leaves 12 healthy and 3 ill. At \(u_2\), the healthy row is \((1-3/12,2/12,1/12)=(3/4,1/6,1/12)\). The ill row is \((1/3,1-2/3,1/3)=(1/3,1/3,1/3)\), giving

$$ \widehat B(u_2)= \begin{pmatrix} 3/4&1/6&1/12\\ 1/3&1/3&1/3\\ 0&0&1 \end{pmatrix}. $$

The first row of the product \(\widehat B(u_1)\widehat B(u_2)\) is

$$ \left( 0.7(3/4)+0.2(1/3),\ 0.7(1/6)+0.2(1/3),\ 0.7(1/12)+0.2(1/3)+0.1 \right) = (71/120,\ 11/60,\ 27/120). $$

The full matrix is therefore

$$ \widehat P(0,u_2)= \begin{pmatrix} 71/120&11/60&27/120\\ 1/3&1/3&1/3\\ 0&0&1 \end{pmatrix} \approx \begin{pmatrix} 0.5917&0.1833&0.2250\\ 0.3333&0.3333&0.3333\\ 0&0&1 \end{pmatrix}. $$

The healthy-start row sums to \(71/120+22/120+27/120=1\). The risk-set check after \(u_2\) also works: healthy becomes \(12-2-1+1=10\), and ill becomes \(3+2-1-1=3\). The recovery is added to the healthy count, while the two departures from illness are recovery and death.

Useful diagnostics include checking that every update row sums to 1, has no negative entries, and has zero probability of leaving the dead state. The final product should also have nonnegative entries and rows summing to 1, subject to rounding. A negative diagonal indicates that the total estimated departures from an origin state exceed its risk set, usually because counts or denominators were entered incorrectly. A row sum different from 1 often signals a missing transition category, an incorrect diagonal, or an arithmetic error.

The Aalen-Johansen product update is a nonparametric approach based on event-time risk sets. Directly reporting observed state proportions is a simpler descriptive alternative, but those proportions do not in general account for censoring in the same way or estimate conditional transitions from every origin state. Parametric intensity models are another alternative when a specified model is appropriate; they trade fewer parameters or smoother estimates for additional modeling assumptions. These calculations do not establish that the Markov or censoring assumptions hold, and estimates can be unstable when an origin-state risk set is small. Constant-intensity matrix-exponential calculations are a distinct model-based approach.

Common pitfall: Do not treat recovery as if it only removes someone from the ill state. A recovery is a transition \(1\to0\), so it also adds to the healthy count. Likewise, do not treat censoring as death or multiply event-time updates in an arbitrary order. Use the pre-event origin-state risk sets, include all tied transitions in their origin rows, and apply updates chronologically.

Check Your Understanding

Work each problem before reading its solution.

  1. At an event time, \(Y_0=8\), with one onset and one death from state 0; \(Y_1=4\), with one recovery and one death from state 1. Write the update matrix.
  2. What does the entry \(\widehat P_{02}(s,t)\) represent in the state order used here?
  3. There are 9 healthy and 3 ill people just before an event time. At that time, one healthy person develops illness, one healthy person dies, one ill person recovers, and one ill person dies. How many are healthy and ill immediately afterward, ignoring censoring?
  4. Why is censoring not entered as an off-diagonal transition in the event-time update?

Solutions. (1) The healthy row is \((1-2/8,1/8,1/8)=(3/4,1/8,1/8)\); the ill row is \((1/4,1-2/4,1/4)=(1/4,1/2,1/4)\). Thus the matrix is \(\begin{pmatrix}3/4&1/8&1/8\\1/4&1/2&1/4\\0&0&1\end{pmatrix}\). (2) It estimates the probability of being dead at \(t\), conditional on being healthy at \(s\), under the model and observation assumptions. (3) Healthy: \(9-1-1+1=8\). Ill: \(3+1-1-1=2\). (4) Censoring records the end of observation, not a transition into another modeled state; it removes the individual from subsequent risk sets.

Clinical Biostats