Tutorials › Competing Risks and Multi-State Models › A Hand Calculation Without Censoring

Cumulative Incidence Functions · Tutorial 60 of 699

A Hand Calculation Without Censoring

Learn to calculate and check cumulative incidence by hand when every cohort member has complete follow-up and there is no censoring.

Intermediate 10 min read

What You'll Learn

  • Set up event-time risk sets for a cohort with complete follow-up and no censoring.
  • Calculate all-cause event-free survival immediately before and after each event time.
  • Compute each cause’s cumulative-incidence increment and running total.
  • Handle tied events by combining their counts at the same event time.
  • Check hand calculations against observed cause-specific event proportions.
  • Explain why treating competing events as censoring does not estimate cause-specific cumulative incidence.

Why Work Through the Calculation by Hand?

A cumulative-incidence estimate is built one event time at a time. At each time, it combines the chance of still being event-free just beforehand with the observed proportion of the risk set experiencing the cause of interest at that time. A hand calculation makes both pieces visible: competing events affect how many people remain event-free, while an event of a particular cause adds only to that cause’s cumulative incidence.

Here we consider the simplest setting: everyone enters at the same origin, each person’s event time and cause are observed, and no one is censored before the time horizon being studied. The calculations use the Aalen–Johansen estimator introduced in the earlier material on cumulative incidence. They are not a different estimator; they show how to compute it from a small cohort.

Definition: Let \(u_1<u_2<\cdots<u_m\) be the distinct observed event times. At time \(u_l\), let \(Y_l\) be the number of people still event-free immediately before that time, and let \(d_{lj}\) be the number who experience cause \(j\). Write \(d_l=\sum_j d_{lj}\) for the total number of events at that time. The estimated all-cause event-free survival just before \(u_l\) is \(\hat S(u_l-)\). The estimated cause-\(j\) cumulative incidence through \(u_l\) is \(\hat F_j(u_l)\).

With no censoring, the calculations are

$$ \hat S(u_l)=\hat S(u_l-)\left(1-\frac{d_l}{Y_l}\right), \qquad \Delta\hat F_j(u_l)=\hat S(u_l-)\frac{d_{lj}}{Y_l}, \qquad \hat F_j(u_l)=\hat F_j(u_l-)+\Delta\hat F_j(u_l). $$

Before the first event time, \(\hat S(u_1-)=1\) and \(\hat F_j(u_1-)=0\). At a tied event time, all events at that time are counted together in \(d_l\) and the cause-specific counts \(d_{lj}\). The risk set is the number event-free just before the tied time, not a sequence of risk sets created by arbitrarily ordering the tied events.

Why the Increment Has This Form

The increment is a product of two factors. The first, \(\hat S(u_l-)\), estimates the proportion still event-free immediately before \(u_l\). The second, \(d_{lj}/Y_l\), is the observed cause-\(j\) event proportion in that risk set. Multiplying gives the estimated fraction of the original cohort that remains event-free up to just before \(u_l\) and then experiences cause \(j\) at \(u_l\). Adding these disjoint event-time contributions gives the cumulative incidence through the time of interest.

In the no-censoring setting, this calculation also has a useful direct interpretation. If \(n\) people start event-free, then just before \(u_l\), \(Y_l\) people are event-free, so \(\hat S(u_l-)=Y_l/n\). Therefore,

$$ \Delta\hat F_j(u_l) = \frac{Y_l}{n}\frac{d_{lj}}{Y_l} = \frac{d_{lj}}{n}. $$

Thus each event of cause \(j\) adds \(1/n\) to that cause’s cumulative incidence. Summing through a horizon \(t\) gives the proportion of the original cohort that has experienced cause \(j\) by \(t\). The event-time calculation remains valuable: it shows how survival and cause-specific event increments combine, and it provides a structure that is useful beyond this simplified setting.

Worked Example: Two Causes and Four Event Times

Consider a hypothetical cohort of eight people, all followed from the same origin until their event is observed. There is no censoring. The event records are: at time 2, two cause A events; at time 4, one cause A and one cause B event; at time 7, two cause B events; and at time 9, one cause A and one cause B event. We calculate both cause-specific cumulative incidences.

At time 2, all eight people are at risk. The total event proportion is \(2/8\), so \(\hat S(2)=1(1-2/8)=0.75\). The cause A increment is \(1(2/8)=0.25\), and the cause B increment is zero.

At time 4, six people remain event-free. The event-free survival just beforehand is 0.75. Each cause has one event, so each increment is \(0.75(1/6)=0.125\). The total event proportion is \(2/6\), giving \(\hat S(4)=0.75(1-2/6)=0.50\).

At time 7, four people remain at risk and both events are cause B. The cause B increment is \(0.50(2/4)=0.25\). Survival becomes \(0.50(1-2/4)=0.25\).

At time 9, two people remain at risk, one with each cause. Each increment is \(0.25(1/2)=0.125\), and survival becomes zero. The complete calculation is:

Time\(Y_l\)\(d_{lA}\)\(d_{lB}\)\(\hat S(u_l-)\)\(\Delta\hat F_A\)\(\hat F_A\), running\(\Delta\hat F_B\)\(\hat F_B\), running\(\hat S(u_l)\)
28201.000.2500.250000.750
46110.7500.1250.3750.1250.1250.500
74020.50000.3750.2500.3750.250
92110.2500.1250.5000.1250.5000

At the end of follow-up, the estimated cumulative incidences are 0.50 for cause A and 0.50 for cause B. These match the observed proportions: four of eight people experienced each cause. The final event-free survival is zero because all eight people experienced an event.

A Second Calculation: Tied Events

Tied event times are handled using the same formulas. The key is to use one risk set immediately before the tied time and to count all events at that time before updating survival. This avoids making the answer depend on an arbitrary ordering of events recorded at the same time.

Worked Example: Three People Have Events at the Same Time

In a hypothetical cohort of six people with complete follow-up and no censoring, one person experiences cause A at time 1, two experience cause B at time 3, and three experience cause A at time 5.

At time 1, \(Y_1=6\). The cause A increment is \(1(1/6)=1/6\), and survival becomes \(5/6\).

At time 3, \(Y_2=5\) and both tied events are cause B. The cause B increment is \((5/6)(2/5)=1/3\). The survival update uses the total tied count: \(\hat S(3)=(5/6)(1-2/5)=1/2\).

At time 5, \(Y_3=3\), and all three remaining people experience cause A. The cause A increment is \((1/2)(3/3)=1/2\), leaving survival at zero. The final estimates are \(\hat F_A=1/6+1/2=2/3\) and \(\hat F_B=1/3\), matching the observed proportions of four out of six and two out of six.

Reading the Numbers and Checking the Calculation

At an intermediate time, the running total for a cause is the estimated probability of having experienced that cause by that time, in the cohort represented by the estimate. It is not the proportion of events that are of that cause among people who have had any event. Those are different denominators: cumulative incidence uses the original cohort, while the latter proportion conditions on having experienced an event.

A useful calculation check follows directly from the updates. At each event time, all-cause survival falls by \( \hat S(u_l-)d_l/Y_l \), while the sum of all cause-specific increments is

$$ \sum_j \Delta\hat F_j(u_l) = \hat S(u_l-)\frac{\sum_j d_{lj}}{Y_l} = \hat S(u_l-)\frac{d_l}{Y_l}. $$

So the loss in event-free survival equals the combined increase in cumulative incidence across causes. Starting from survival 1 and cumulative incidences 0, this means that after any event time,

$$ \hat S(u_l)+\sum_j\hat F_j(u_l)=1. $$

If this identity fails beyond rounding, check the risk set, event counts, and whether every cause-specific increment was added to its own running total. Also check that every event in a tie was included in the same update. Risk sets should decrease by the total number of events at each time; with no censoring, no one leaves the risk set for any other reason.

Worked Example: Comparing With a Cause-Specific Kaplan–Meier Calculation

Consider a hypothetical cohort of ten people with complete follow-up: two cause A events occur at time 2, two cause B events at time 4, two cause A events at time 8, and four cause B events at time 10. We calculate the cause A cumulative incidence through time 8.

At time 2, \(Y=10\), so the cause A increment is \(2/10=0.20\), and event-free survival becomes 0.80. At time 4, \(Y=8\); the cause B events reduce survival to \(0.80(1-2/8)=0.60\), but they add nothing to cause A incidence. At time 8, \(Y=6\), so the cause A increment is \(0.60(2/6)=0.20\). Therefore \(\hat F_A(8)=0.20+0.20=0.40\). This is also the observed proportion, four of ten.

A common wrong calculation is to treat the two cause B events at time 4 as censoring in a Kaplan–Meier calculation for cause A, then report one minus that survival estimate as the cause A risk. That calculation gives \(1-0.80(1-2/6)=0.4667\) at time 8, not 0.40. The correction is to retain the competing events in the all-cause event-free survival calculation and add only cause A increments to \(\hat F_A\). The cause-specific Kaplan–Meier complement does not estimate the observed cause A probability in the presence of competing events.

Assumptions, Alternatives, and Limits

For these hand calculations, the required data conditions are direct: cohort members share the stated time origin; event times and causes are correctly recorded; follow-up is complete through the horizon of interest; and there is no censoring before that horizon. The formulas also presume that the causes being counted are mutually exclusive event types, so that one individual’s first event is assigned to one cause. If event status is not known through the horizon, this simple complete-follow-up calculation is not justified.

With no censoring and a common entry time, a direct count of people experiencing each cause by \(t\), divided by the cohort size, gives the same result as the event-time calculation. The event-time form is preferable for learning how the estimate is assembled and for checking its behavior. When censoring is present, the direct proportion generally cannot be used as though everyone’s event status were known; the appropriate risk-set calculation requires additional conditions and methods.

The most important alternative to distinguish from cumulative incidence is the complement of a cause-specific Kaplan–Meier estimate that treats other causes as censoring. It answers a different hypothetical question and, in general, overstates the observed probability of the cause of interest. The earlier material on why one minus Kaplan–Meier is not a cause-specific risk develops this distinction; the hand calculation here makes the difference visible in a small cohort.

The no-censoring calculation is intentionally limited. It does not address uncertainty intervals, comparisons between groups, or estimation under censoring. Its value is as a transparent accounting exercise: every increment has an explicit risk set and survival weight, and the final estimates can be checked directly against the observed cohort.

Key takeaway: At each event time, multiply the cause-specific fraction of the current risk set by the estimated fraction still event-free just beforehand. Add that increment to the cause’s running total, update all-cause survival using all causes, and verify that survival plus the cumulative incidences sums to one.

Check Your Understanding

Try each question, then compare your reasoning with the brief solutions.

  1. In a fully observed cohort of 12 people, three cause A events occur at the first event time. What is the cause A increment, and what is event-free survival immediately afterward?
  2. Just before a tied event time, \(\hat S=0.60\) and \(Y=5\). At that time, one person experiences cause A and one experiences cause B. Find both increments and the updated survival.
  3. Why must tied events be counted together rather than processed in an arbitrary order?
  4. In a cohort with no censoring, what direct calculation should agree with \(\hat F_j(t)\)?
  5. State one reason that one minus a cause-specific Kaplan–Meier estimate need not equal the observed cause-specific cumulative incidence.

Solutions. (1) The increment is \(3/12=0.25\); survival afterward is \(1-3/12=0.75\). (2) Each increment is \(0.60(1/5)=0.12\); total survival loss is \(0.24\), so updated survival is \(0.36\). (3) An arbitrary ordering would change intermediate risk sets even though the recorded event times are tied; the proper update uses the risk set immediately before the shared time and all events at that time. (4) Count cohort members who experienced cause \(j\) by \(t\), then divide by the original cohort size. (5) Treating competing events as censoring removes them from the risk set without accounting for their role in the real-world probability of the cause of interest, so the Kaplan–Meier complement targets a different quantity.

Clinical Biostats