Tutorials › Competing Risks and Multi-State Models › Deriving Aalen-Johansen From Estimated Intensities

Transition Intensities and Probabilities · Tutorial 290 of 699

Deriving Aalen-Johansen From Estimated Intensities

Learn how estimated transition intensities become event-time updates for estimated state probabilities, and how to check the calculations and assumptions.

Advanced 12 min read

What You'll Learn

  • Define transition-count and risk-set increments for each allowed transition
  • Construct the full intensity-increment matrix, including its diagonal
  • Derive the Aalen-Johansen event-time recursion from the estimated intensities
  • Calculate state probabilities through successive matrix updates
  • Check risk-set denominators, tied event times, and local probability updates
  • Recognize the assumptions and limitations of the estimator

From Estimated Intensities to State Probabilities

Transition intensities describe the instantaneous rates at which individuals move between states. Their Nelson-Aalen estimates summarize observed transitions relative to the numbers at risk. The Aalen-Johansen estimator connects these quantities: at each observed event time, it turns the estimated intensity increments into an update matrix, then applies those updates successively to the state-probability vector.

The essential step is to include more than the estimated increments for transitions between distinct states. The diagonal of the increment matrix records the corresponding loss of probability from each origin state. Without those diagonal entries, the update would count probability flowing into other states but not probability leaving the origin state.

Definition: Let \(X(t)\) take values in a finite state space \(1,\ldots,K\). For distinct states \(h\) and \(j\), let \(N_{hj}(t)\) count observed transitions from \(h\) to \(j\) by time \(t\), and let \(Y_h(t)\) be the number observed and at risk in state \(h\) just before \(t\). At an event time \(u\), the Nelson-Aalen transition-intensity increment is \(\Delta\widehat A_{hj}(u)=\Delta N_{hj}(u)/Y_h(u)\), when \(Y_h(u)>0\). Set \(\Delta\widehat A_{hh}(u)=-\sum_{j\ne h}\Delta\widehat A_{hj}(u)\), and set entries for transitions not in the model to zero. The resulting matrix is \(\Delta\widehat A(u)\).

The diagonal is defined so each row of \(\Delta\widehat A(u)\) sums to zero. The event-time update matrix is \(I+\Delta\widehat A(u)\), where \(I\) is the \(K\) by \(K\) identity matrix. Under the row-vector convention, probability moves from an origin state along the corresponding row.

Assumptions and scope: The usual risk-set construction requires correctly recorded state transitions and risk sets, and censoring that is independent of future transitions conditional on the observed history used to define the model. A transition that occurs must have a positive risk-set denominator in its origin state. For an interpretation as transition probabilities conditional on the current state, the standard Markov model assumes that, given the current state (and time, in a time-inhomogeneous model), the future evolution does not additionally depend on the earlier path. Individuals are followed until transition, censoring, or the analysis horizon; the method does not recover transitions after censoring without further assumptions.

Why the Matrix Update Has This Form

Consider a short interval after time \(u\). For an individual currently in state \(h\), the probability of a transition to \(j\ne h\) over a sufficiently short interval is approximately the transition-intensity increment for \(h\) to \(j\). The probability of remaining in \(h\) is one minus the sum of the probabilities of leaving \(h\). In matrix form, the first-order update is therefore the identity plus the intensity-increment matrix.

The Nelson-Aalen estimate replaces each unknown transition-intensity increment with the observed number of transitions divided by the relevant risk set. Applying this substitution at every event time gives the Aalen-Johansen recursion. For event times \(u_1<\cdots<u_m\), the estimated transition-probability matrix from time \(s\) through time \(t\) is the ordered product of the event-time update matrices in that interval. If \(\widehat p(s)\) is a row vector of state probabilities at \(s\), the estimated state-probability vector is obtained by multiplying it by that product.

$$ \widehat P(s,t) = \prod_{s<u\le t}\bigl(I+\Delta\widehat A(u)\bigr), \qquad \widehat p(t) = \widehat p(s)\widehat P(s,t). $$

Here the factors are applied in chronological order from left to right: the factor for the earliest event time comes first. This recursion is not an extra assumption layered on top of the Nelson-Aalen estimates. It is the discrete event-time construction obtained when the estimated intensity increments are inserted into the probability-update rule. At a tied time, all transitions observed at that time contribute to the same increment matrix; they are not ordered as though one individual transition occurred before another.

Worked Example: Building One Event-Time Update

Suppose a hypothetical study has three states: A, B, and C. At one event time, 12 individuals are at risk in A. Two transition from A to B and one transitions from A to C. Assume no other transitions are observed at this time.

The Nelson-Aalen increments from A are \(\Delta\widehat A_{AB}=2/12=0.1667\) and \(\Delta\widehat A_{AC}=1/12=0.08333\). The diagonal entry for A is the negative of their sum: \(\Delta\widehat A_{AA}=-(2+1)/12=-0.2500\). The other rows have zero increments at this time.

$$ \Delta\widehat A= \begin{pmatrix} -0.2500 & 0.1667 & 0.08333\\ 0 & 0 & 0\\ 0 & 0 & 0 \end{pmatrix}, \qquad I+\Delta\widehat A= \begin{pmatrix} 0.7500 & 0.1667 & 0.08333\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{pmatrix}. $$

If the probability vector immediately before this event time is \((1,0,0)\), multiplying by the update matrix gives \((0.7500,0.1667,0.08333)\). Thus, at this update, the estimated probability remaining in A is 9/12, while the estimated probabilities moving to B and C are 2/12 and 1/12. The row sums to one because the diagonal accounts for the total estimated probability leaving A.

The Aalen-Johansen Recursion in a Cohort

The recursion is most transparent when written one event time at a time. Start with the distribution of individuals across states. At each event time, calculate a separate risk-set ratio for each origin state and allowed destination, construct the diagonal entries as negative outgoing sums, and multiply the current probability vector by the resulting update matrix. The next event time uses the updated vector, not the original one.

1
Estimate each outgoing increment.
For every allowed transition \(h\) to \(j\), calculate \(\Delta N_{hj}(u)/Y_h(u)\) using the risk set immediately before \(u\).
2
Complete the increment matrix.
For each origin state, set the diagonal to minus the sum of its off-diagonal increments. Include zero entries for transitions with no observed increment at that time.
3
Update the state probabilities.
Multiply the probability row vector just before \(u\) by \(I+\Delta\widehat A(u)\). Repeat in chronological order through the desired horizon.

Worked Example: Two Successive Event-Time Updates

Consider a hypothetical cohort of 10 individuals, all initially in state A, with states A, B, and C. At the first event time, all 10 are at risk in A; two transition to B and one to C. At the second event time, seven remain at risk in A and two are at risk in B; one transitions from A to B and one from B to C. No other transitions occur at either time.

At the first time, the A row of the increment matrix is \((-3/10,2/10,1/10)\). The update matrix is \[ \begin{pmatrix} 0.7&0.2&0.1\\ 0&1&0\\ 0&0&1 \end{pmatrix}. \] Applying it to the initial vector \((1,0,0)\) gives the probability vector \((0.7,0.2,0.1)\).

At the second time, the A-to-B increment is \(1/7\), so the A diagonal increment is \(-1/7\). The B-to-C increment is \(1/2\), so the B diagonal increment is \(-1/2\). Therefore the second update matrix is

$$ I+\Delta\widehat A(u_2) = \begin{pmatrix} 6/7 & 1/7 & 0\\ 0 & 1/2 & 1/2\\ 0 & 0 & 1 \end{pmatrix}. $$

Multiplying the vector from the first time by this matrix gives \[ (0.7,0.2,0.1) \begin{pmatrix} 6/7&1/7&0\\ 0&1/2&1/2\\ 0&0&1 \end{pmatrix} = (0.6,0.2,0.2). \] For example, the updated probability in B is \(0.7(1/7)+0.2(1/2)=0.1+0.1=0.2\). The probability in C is \(0.1+0.2(1/2)=0.2\). Probability can enter B from A and leave B for C in the same update, so both contributions must be included. The second update uses the estimated transitions and risk sets at the second time, while its starting state distribution comes from the first update.

Justification of the Recursion

The connection can be justified directly from the transition probabilities over a short interval. For a process currently in state \(h\), let \(\Delta A_{hj}\) denote the transition-intensity increment from \(h\) to \(j\). To first order, the chance of moving to \(j\ne h\) is \(\Delta A_{hj}\). Since the process must either stay in \(h\) or move to one of its other states, its chance of staying in \(h\) is \(1-\sum_{j\ne h}\Delta A_{hj}\). Thus, the one-interval transition matrix has off-diagonal entries \(\Delta A_{hj}\) and diagonal entry \(1-\sum_{j\ne h}\Delta A_{hj}\), which is exactly \(I+\Delta A\).

Replacing each unknown increment with its Nelson-Aalen estimate gives the empirical event-time update. If \(\widehat p(u-)\) is the estimated state distribution before \(u\), then the probability assigned to state \(j\) after the update is \(\widehat p_j(u)=\sum_h\widehat p_h(u-)[I+\Delta\widehat A(u)]_{hj}\). This sum includes probability retained in \(j\) and probability arriving from every other state. Repeating the relation at each event time yields the product recursion above. The argument also shows why the update uses the full matrix rather than a separate calculation for each destination.

Worked Example: Why the Diagonal Cannot Be Omitted

Return to the hypothetical event time with 12 individuals at risk in A, two transitions from A to B, and one from A to C. Suppose an analyst uses only the off-diagonal increments and leaves the diagonal of the update matrix equal to 1. The A row would then be \((1,2/12,1/12)\), with row sum \(1+2/12+1/12=1.25\). Starting with probability one in A would produce a total of 1.25 across the three states, which cannot be a probability distribution.

The correction is to make the diagonal increment \(-(2+1)/12=-3/12\), giving an A-to-A update of \(1-3/12=9/12\). The corrected row \((9/12,2/12,1/12)\) sums to 1. The diagonal is not an independent estimate of a new transition; it is the probability balance required by the estimated outgoing transition increments.

Assumptions, Diagnostics, and Limitations

Several practical checks follow from the construction. At every event time, verify that each transition denominator is the risk set in its origin state immediately before that time. Check that a transition count does not exceed its origin-state risk set, and that the sum of outgoing transition counts from an origin state does not exceed its risk set. Under these conditions, each diagonal entry of the event-time update is nonnegative, and each row of the update matrix sums to one.

An empty risk set requires particular care. A transition increment cannot be estimated by dividing by zero. If \(Y_h(u)=0\), there should be no observed transition out of \(h\) at \(u\); the corresponding increment is not identified from that risk set. Do not silently replace the denominator with another state's risk set or carry a fabricated estimate forward. Also check the event-time coding: transitions tied across different individuals belong in the same increment matrix, and an individual's origin state is the state occupied just before the transition.

The Aalen-Johansen construction combines estimated transition intensities with a product of event-time updates. Its interpretation depends on the state process and censoring assumptions, and estimates may be unstable when risk sets are small. It does not by itself adjust for informative censoring, unrecorded state changes, or model misspecification. The standard alternative of estimating transition hazards without assembling them into a joint state-probability recursion does not directly provide the same overall state distribution. In competing-risks settings, the Aalen-Johansen estimator specializes to the familiar cumulative-incidence construction; its multi-state form keeps track of transitions among all modeled states.

Key takeaway: Estimate each off-diagonal intensity increment by its transition count divided by its origin-state risk set, set each diagonal increment to the negative sum of outgoing increments, and update state probabilities by multiplying by \(I+\Delta\widehat A\) at each event time.

Check Your Understanding

Work through the questions, then compare your reasoning with the solutions.

  1. At an event time, 20 individuals are at risk in state H; three transition to J and one to K. What are the estimated off-diagonal increments, the diagonal increment for H, and the updated H row?
  2. Why must the update at an event time be \(I+\Delta\widehat A\), rather than a matrix containing only off-diagonal increments?
  3. At a particular event time, one individual transitions from state L to M, but \(Y_L=0\). What is wrong, and what should be checked?
  4. Suppose the current probability vector is \((0.8,0.2,0)\), and an event-time update has rows \((0.75,0.25,0)\), \((0,0.5,0.5)\), and \((0,0,1)\). Calculate the updated vector.

Solutions. (1) The increments are \(\Delta\widehat A_{HJ}=3/20=0.15\) and \(\Delta\widehat A_{HK}=1/20=0.05\); the diagonal increment is \(-4/20=-0.20\). The updated H row is \((0.80,0.15,0.05)\). (2) The diagonal represents the probability remaining in each origin state after outgoing transitions. Omitting it fails to subtract outgoing probability and generally makes the row sum exceed one. (3) A transition cannot be estimated from a zero risk set. Check the event time, state history, and risk-set construction; if the denominator truly is zero, the observed data and specified model are inconsistent at that time. (4) Multiply the row vector by the matrix: the result is \((0.8(0.75),\,0.8(0.25)+0.2(0.5),\,0.2(0.5))=(0.60,0.30,0.10)\).

Clinical Biostats