Reading a Cumulative Incidence at a Chosen Time
A cumulative incidence estimate is a function of time, not a single number. In practice, a report often asks for one value: the estimated probability of experiencing a particular event cause by a clinically chosen horizon, such as 30 days or 2 years. To report that value correctly, identify whether the horizon is an event time and use the step function’s convention consistently. The estimate changes at event times; between them, it stays constant.
This tutorial focuses on evaluating the Aalen–Johansen cumulative incidence estimate at a prespecified horizon. It assumes the event and censoring indicators, risk sets, and cause-specific event increments have been constructed appropriately. In particular, the observations concern a first event among mutually exclusive causes, and right censoring is independent of the event process under the conditions used for estimation. If delayed entry is present, the risk sets must account for it. An estimate at a horizon also requires adequate follow-up and people at risk to support estimation there.
The factor \(d_{jk}/Y_j\) is the estimated cause-\(k\) event increment at time \(t_j\), conditional on being at risk just before that time. It is weighted by \(\hat S(t_j-)\), the estimated probability of having remained free of every event cause up to just before \(t_j\). The estimate accumulates these weighted increments. A competing event contributes to the total event-free survival reduction, but not to the cause-\(k\) event count \(d_{jk}\).
Why the Horizon Convention Works
The index condition \(t_j\leq t\) gives a direct rule for evaluating the step function. If the horizon equals an observed event time, include that time’s increment. If the horizon falls strictly between two event times, include all increments up to the earlier time and none from the later time. If the horizon precedes the first event time, the sum has no terms and the estimate is zero.
This convention follows from the definition of cumulative incidence as the probability of experiencing cause \(k\) by time \(t\). An event occurring at \(t\) has occurred by \(t\), so its increment belongs in the estimate. Immediately before \(t_j\), the sum includes only times strictly earlier than \(t_j\); at \(t_j\), the new term is added. Since there are no event increments between consecutive observed event times, the value cannot change there.
Worked Example: A Horizon Exactly at an Event Time
Suppose a hypothetical cohort has two observed event times. At time 2 months, 12 people are at risk; 1 has cause A and 1 has cause B. At time 5 months, 9 are at risk; 1 has cause A and 2 have cause B. The risk sets are taken immediately before each event time. Find the estimated cause-A cumulative incidence at 4 months and at 5 months.
At 2 months, \(\hat S(2-)=1\). The cause-A increment is \(1/12\), so \(\hat F_A(2)=1/12=0.08333\). The event-free survival just after time 2 is \(1-2/12=10/12=5/6\).
There are no event times between 2 and 5 months. Therefore the estimate at 4 months remains \(1/12\), or 8.333%. At 5 months, the cause-A increment is weighted by survival just before that time: $$ \hat S(5-)\frac{d_{5,A}}{Y_5} =\frac{5}{6}\frac{1}{9} =\frac{5}{54} \approx 0.09259. $$
Because 5 months is an event time, include this increment: $$ \hat F_A(5)=\frac{1}{12}+\frac{5}{54} =\frac{9}{108}+\frac{10}{108} =\frac{19}{108} \approx 0.1759. $$ The estimated probability of a cause-A event by 5 months is 17.59%. The difference between the estimates at 4 and 5 months is exactly the cause-A jump at month 5.
Reading a Horizon Between Event Times
A horizon does not need to coincide with an observed event time. Read the estimate from the most recent completed jump, not by interpolating between jumps. This rule applies even when other causes have events before the horizon: their contributions affect the event-free survival weighting of future cause-specific increments, but they do not create a cause-\(k\) jump of their own.
Worked Example: A Horizon Between Two Event Times
Consider hypothetical event times at 1, 4, and 8 weeks. At week 1, \(Y_1=20\) and there are two cause-A events and no other events. At week 4, \(Y_2=16\) and there is one cause-A event and no other event. The next listed event time is week 8. Evaluate the cause-A cumulative incidence at week 6.
At week 1, the event-free survival drops from 1 to \(1-2/20=0.9\), and the cause-A increment is \(2/20=0.1\). The week-4 cause-A increment is weighted by the survival just before week 4: $$ \hat S(4-)\frac{d_{2,A}}{Y_2} =0.9\frac{1}{16} =0.05625. $$
Week 6 lies after the cause-A jump at week 4 and before the next listed event time at week 8. There is no increment between weeks 4 and 6, so $$ \hat F_A(6)=\frac{2}{20}+0.9\frac{1}{16} =0.1+0.05625 =0.15625. $$ The estimated cause-A event probability by week 6 is 15.63%. It is not appropriate to interpolate between the values at weeks 4 and 8: the estimate is a step function, not a line segment.
An event time at the horizon changes the answer, even if the change is small. The practical calculation is to list the observed event times no later than the horizon and sum their weighted increments. No increment from a later event time is included. If event times are tied, use the event-time counts and risk set as defined for that tied time; the horizon includes the tied-time increment when it equals that time.
Worked Example: Competing Events Before the Horizon
In a hypothetical study, the following risk-set counts are observed. At time 3 months, \(Y_1=15\), with 1 cause-A event and 1 cause-B event. At time 7 months, \(Y_2=11\), with 0 cause-A events and 2 cause-B events. At time 10 months, \(Y_3=7\), with 1 cause-A event and no cause-B events. Find \(\hat F_A(8)\) and \(\hat F_A(10)\).
At 3 months, the cause-A increment is \(1/15\), so \(\hat F_A(3)=1/15\). The two events at that time reduce event-free survival to \(1-2/15=13/15\). At 7 months, there are only cause-B events. Thus \(\hat F_A\) has no cause-A jump there, although event-free survival is multiplied by \(1-2/11=9/11\).
The horizon of 8 months is after the week-7-equivalent event time of 7 months and before the event time at 10 months. (All times here are in months.) Consequently, no cause-A increment after month 3 has occurred by month 8, and \(\hat F_A(8)=1/15\approx0.06667\), or 6.667%.
For the jump at 10 months, the survival just before that time is $$ \hat S(10-)=\frac{13}{15}\frac{9}{11} =\frac{39}{55} \approx 0.7091. $$ The cause-A increment is \((39/55)(1/7)=39/385\approx0.1013\). Since month 10 is included in the horizon, $$ \hat F_A(10)=\frac{1}{15}+\frac{39}{385} =\frac{194}{1155} \approx 0.1680. $$ The cause-B events at month 7 do not themselves increase the cause-A cumulative incidence, but they lower event-free survival and therefore affect the weight on the later cause-A increment.
Checking the Reading and Comparing Alternatives
A useful check is to locate the horizon on the event-time scale before calculating. Mark the preceding event time and the next event time. If the horizon is between them, the value equals the post-jump value at the preceding event time. If it equals an event time, include that jump. This simple check prevents the common off-by-one-time error of using \(t_j<t\) when the intended quantity is risk by time \(t\).
- Check units and cause. A horizon of 6 days is not interchangeable with 6 months, and \(d_{jk}\) must count the cause being reported.
- Check the risk set. \(Y_j\) is the number at risk just before \(t_j\), not the number initially enrolled or the number remaining afterward.
- Check for interpolation. Aalen–Johansen estimates are flat between event times; do not draw a sloped segment or invent a fractional event increment.
- Check what the estimate means. \(\hat F_k(t)\) estimates the probability of the specified cause occurring by \(t\) in the presence of competing causes. It is not the probability of any event and not a cause-specific net risk.
The raw fraction of participants with cause \(k\) by a horizon is generally not an adequate substitute when some participants are censored before that horizon: their event status by the horizon is unknown. The Aalen–Johansen estimate uses risk sets to account for right censoring under the independent-censoring condition. The all-cause event-free survival estimate answers a different question: it concerns remaining free of every event cause. Likewise, taking one minus a cause-specific Kaplan–Meier estimate does not generally give the observed-world probability of cause \(k\) in the presence of competing events. Those alternatives should not be substituted simply because they produce a value at the same horizon.
The estimate is only as informative as the follow-up and risk-set data supporting it. It does not resolve informative censoring, incorrect cause coding, or an unsuitable target horizon. Nor does the point estimate by itself describe sampling uncertainty; uncertainty requires a separate variance or interval analysis. These limitations matter especially when few participants remain under observation, though evaluating the step function still follows the same mathematical convention.
Check Your Understanding
Answer each question, then compare with the solutions.
- An event time occurs exactly at the prespecified horizon. Is its cause-specific increment included in the cumulative incidence estimate?
- The last event time before a horizon is at day 12, and the next is at day 20. What value of the step function is used at day 16?
- At an event time, \(Y_j=25\), \(d_j=5\), and \(d_{jA}=2\). If \(\hat S(t_j-)=0.8\), calculate the cause-A jump.
- At a time before the horizon, two cause-B events occur and no cause-A events occur. Does the cause-A cumulative incidence jump at that time? What may change for later cause-A increments?
- Why might the raw proportion with cause A by the horizon differ from the Aalen–Johansen estimate when some participants are censored earlier?
Solutions. (1) Yes. The estimate is right-continuous and includes event times satisfying \(t_j\leq\tau\). (2) Use the post-jump value at day 12; the estimate is constant from day 12 up to, but not including, day 20. (3) The jump is \(\hat S(t_j-)d_{jA}/Y_j=0.8(2/25)=0.064\), or 6.4 percentage points. (4) No cause-A jump occurs because \(d_{jA}=0\). The competing events reduce event-free survival, which changes the weights on later cause-A increments. (5) Censored participants’ event status by the horizon is unknown, whereas a raw proportion cannot properly account for that uncertainty; the Aalen–Johansen estimate uses the risk sets under an independent-censoring condition.