Tutorials › Competing Risks and Multi-State Models › Cumulative Incidence With Discrete Event Times

Cumulative Incidence Functions · Tutorial 55 of 699

Cumulative Incidence With Discrete Event Times

Calculate cumulative incidence on a discrete time grid, account for tied events as grouped jumps, and interpret the estimate at and between event times.

Intermediate 10 min read

What You'll Learn

  • Define the event-time grid and the risk set immediately before each grid time.
  • Calculate a target cause’s cumulative incidence using event-free survival and cause-specific event increments.
  • Explain why tied events at one grid time form a single jump rather than an ordered sequence.
  • Read a right-continuous cumulative-incidence estimate at grid points and between them.
  • Identify when censoring conventions or a mistaken interpolation can distort interpretation.

Why a Discrete Event-Time Grid Changes How We Read Risk

In some studies, event times are recorded only at scheduled visits, in whole days, or in another fixed set of intervals. Several people can therefore have the same recorded event time. The estimate of cumulative incidence must treat those tied events as a group: the data identify how many events of each type occurred at a grid time, but not an ordering of those events within that time.

This tutorial focuses on the time structure of cumulative incidence. The introductory material on cumulative incidence as an event probability gives the interpretation: \(F_k(t)\) is the probability of having experienced event type \(k\) by time \(t\), before a competing event. Here the key questions are how the estimate jumps at discrete event times and what its value means between them.

Discrete-Time Setup and the Estimator

Definition: Let the possible event times be \(t_1<t_2<\cdots<t_m\). Immediately before \(t_j\), let \(n_j\) be the number at risk. Let \(d_{kj}\) be the number of events of target cause \(k\) at \(t_j\), and let \(d_j\) be the number of events of all causes at \(t_j\). The event-free estimate immediately before \(t_j\) is \(\widehat S(t_j-)\). The estimated cumulative-incidence jump for cause \(k\) at \(t_j\) is $$ \Delta \widehat F_k(t_j)=\widehat S(t_j-)\frac{d_{kj}}{n_j}. $$ The cumulative estimate is the sum of these jumps up to the time of interest: $$ \widehat F_k(t)=\sum_{t_j\leq t}\widehat S(t_j-)\frac{d_{kj}}{n_j}, \qquad \widehat S(t_j)=\widehat S(t_j-)\left(1-\frac{d_j}{n_j}\right). $$

The risk set is counted immediately before the grid time. All events recorded at \(t_j\) contribute together to \(d_j\), and all target-cause events at that time contribute together to \(d_{kj}\). The factor \(d_{kj}/n_j\) is the observed conditional event probability for the target cause at that grid time among those still event-free just beforehand. Multiplying by \(\widehat S(t_j-)\) weights that conditional probability by the estimated probability of reaching \(t_j\) event-free.

The estimate is a step function. It is zero before the first event time, jumps at each grid time with observed events, and remains constant until the next event time. We use the usual right-continuous convention: the value at \(t_j\) includes the jump at \(t_j\). If the time grid includes event-free times, the estimate simply has no jump at those times.

Why the Jump Has This Form

Suppose the conditional probability of a target-cause event at \(t_j\), given that a person is event-free immediately before \(t_j\), is \(q_{kj}\). The probability of being event-free just before that time is \(S(t_j-)\). Therefore the probability of reaching \(t_j\) event-free and then experiencing cause \(k\) there is $$ P(T=t_j,J=k)=S(t_j-)q_{kj}. $$ The event types are mutually exclusive at a given time for an individual, so the probability of any event at \(t_j\) is the sum of the cause-specific conditional probabilities. In the sample, \(q_{kj}\) is estimated by \(d_{kj}/n_j\), and the probability of remaining event-free through \(t_j\) is estimated by \(1-d_j/n_j\). Applying these two substitutions yields the jump and survival updates above. Adding the cause-\(k\) probability masses for all grid times up to \(t\) gives cumulative incidence.

For these substitutions to estimate population probabilities, the risk sets must represent the individuals still event-free at each time, and censoring must not selectively remove people with different future event risks, under the independent-censoring condition used for this estimator. Event and censoring times recorded on the same grid also require a consistent convention for whether a person censored at a time is counted in that time’s risk set. The calculations below either have no censoring or state the risk sets directly, so this convention does not affect their arithmetic.

Worked Example: Calculating Jumps Across Three Event Times

Consider a hypothetical cohort of 20 people followed without censoring. The event-free risk set and event counts are:

TimeAt risk immediately beforeTarget cause ACompeting cause B
12042
21431
31023

At time 1, \(\widehat S(1-)=1\). The target-cause jump is \(1(4/20)=0.2000\), and the event-free estimate after time 1 is \(1(1-6/20)=0.7000\).

At time 2, the target-cause jump is \(0.7000(3/14)=0.1500\). The event-free estimate after time 2 is \(0.7000(1-4/14)=0.5000\). Thus \(\widehat F_A(2)=0.2000+0.1500=0.3500\).

At time 3, the target-cause jump is \(0.5000(2/10)=0.1000\). Therefore \(\widehat F_A(3)=0.3500+0.1000=0.4500\). The estimate is \(0.2000\) at time 1, \(0.3500\) at time 2, and \(0.4500\) at time 3, with a flat segment between each pair of event times. The remaining event-free proportion after time 3 is \(0.5000(1-5/10)=0.2500\); the three quantities \(0.4500\), \(0.3000\) for cause B, and \(0.2500\) sum to 1.

Tied Events Are One Grouped Jump

With a discrete grid, ties are often an inherent feature of measurement rather than a data error. If \(d_{kj}\) target-cause events and \(d_j-d_{kj}\) competing events occur at the same recorded time, the target jump is based on the common risk set just before that time. It is not calculated by choosing an arbitrary first event, updating the risk set, and then processing the other tied records one by one. The data do not establish such an order.

Worked Example: A Target-Cause Jump Among Tied Events

In a hypothetical analysis, 8 of 10 people are event-free just before time 2, so \(\widehat S(2-)=0.8000\). At time 2, two people experience target cause A and one experiences a competing event. The grouped target jump is $$ \Delta\widehat F_A(2)=0.8000\left(\frac{2}{8}\right)=0.2000. $$ The event-free estimate after time 2 is $$ \widehat S(2)=0.8000\left(1-\frac{3}{8}\right)=0.5000. $$

All three events share the same pre-time risk set of 8. The estimate of cause A increases by 0.2000 at time 2; it does not assign a separate intermediate jump to either of the two target events. A recorded time of 2 does not say which tied individual’s event occurred first, so an estimate at a hypothetical instant between those tied records is not supported by these data.

Reading the Step Function Between Grid Times

A cumulative-incidence estimate does not interpolate linearly between observed event times. If the only event times are 1, 2, and 4, then there is no additional jump at time 3: the estimate at time 3 is the same as it was just after time 2. This flat segment reflects the estimator’s definition on the observed time scale. It does not assert that no biological process was underway between visits; it says that the discrete-time observations provide no separate event-time jump there.

Worked Example: Risk Sets With Censoring and a Gap in the Grid

Suppose a hypothetical study has 12 people and event times at 1, 2, and 4. At time 1, 2 people have target events and 1 has a competing event; 2 others are censored after time 1. Thus 7 are at risk at time 2. At time 2, there is 1 target event and 2 competing events; 1 other person is censored after time 2. One more person is censored between times 2 and 4, leaving 2 at risk at time 4. At time 4, 1 target event and 1 competing event occur. The stated risk sets count each person censored after a given event time as at risk immediately before that time.

At time 1, the target jump is \(1(2/12)=0.1667\), and survival after the event time is \(1(1-3/12)=0.7500\). At time 2, the target jump is \(0.7500(1/7)=0.1071\), so the cumulative estimate is \(0.1667+0.1071=0.2738\). Survival after time 2 is \(0.7500(1-3/7)=0.4286\).

There are no events at time 3, so \(\widehat F_A(3)=0.2738\). At time 4, the jump is \(0.4286(1/2)=0.2143\), giving \(\widehat F_A(4)=0.4881\). The censoring changes later risk-set sizes, but it does not create an event jump. The estimate stays at 0.2738 from just after time 2 until time 4, then includes the time-4 jump.

Checks, Comparisons, and Limitations

A useful arithmetic check is that each target-cause jump is nonnegative and cannot exceed the event-free estimate just before that time. The all-cause event-free estimate must not increase, because \(1-d_j/n_j\) lies between 0 and 1. Across all causes, the cumulative-incidence jumps together account for the probability mass lost from event-free survival. With complete follow-up, the final cause-specific cumulative incidences and final event-free probability sum to 1.

The Aalen-Johansen calculation is the direct discrete-time bookkeeping approach: each cause receives its share of the event probability among those who reached the time event-free. In a cohort with no censoring, a direct proportion of the original cohort experiencing a cause by a given time gives the same cumulative incidence. With censoring, that simple proportion generally does not use later risk sets correctly. The all-cause event-free survival curve describes remaining free of every event; taking its complement does not by itself give the probability of a particular cause.

The estimate is limited by the recorded time scale. If visits are weeks apart, tied records may represent events known only to have occurred within a week, not events that truly happened simultaneously. The step estimate is still defined on the recorded grid, but finer timing cannot be recovered from it. Also inspect whether risk sets are consistent with the event and censoring records, whether event codes are mutually exclusive, and whether the censoring convention at tied times is documented. A decreasing or negative cumulative estimate, an increasing event-free estimate, or a jump larger than the preceding event-free probability signals a calculation or data-handling error.

Common pitfall: Linear interpolation between two event-time estimates may seem like a natural way to fill a gap, but it adds event probability at times where the discrete estimator has no jump. Use the right-continuous step value: at a grid time include its jump, and between grid times retain the last value. Likewise, do not order tied events arbitrarily to invent within-time risk sets.

Check Your Understanding

Answer each question using the grouped-jump and right-continuous conventions.

  1. Just before time 5, \(\widehat S(5-)=0.60\), with 10 at risk. At time 5, one target event and two competing events occur. What is the target jump and what is \(\widehat S(5)\)?
  2. If the last event time before time 8 is time 6, and there are no events at time 7, how is \(\widehat F_k(7)\) related to \(\widehat F_k(6)\)?
  3. At one grid time, 4 target events occur among 20 at risk. Explain why those events are not processed as four events in a known within-time order.
  4. At time 1, \(\widehat S(1-)=1\), with 10 at risk and 2 target events. At time 3, 5 are at risk, \(\widehat S(3-)=0.70\), and 1 target event occurs. Find \(\widehat F_k(3)\).

Solutions. (1) The jump is \(0.60(1/10)=0.0600\); after all three events, \(\widehat S(5)=0.60(1-3/10)=0.4200\). (2) It is unchanged: \(\widehat F_k(7)=\widehat F_k(6)\), since no jump occurs at 7. (3) The records identify a count at the shared time, not an ordering; all four use the risk set immediately before that time and contribute to one grouped jump. (4) The time-1 jump is \(1(2/10)=0.2000\). The time-3 jump is \(0.70(1/5)=0.1400\), so \(\widehat F_k(3)=0.2000+0.1400=0.3400\).

Clinical Biostats