Tutorials › Competing Risks and Multi-State Models › Algebraic Checks for Estimated Cumulative Incidence

Cumulative Incidence Functions · Tutorial 73 of 699

Algebraic Checks for Estimated Cumulative Incidence

Use the cumulative incidence recursion to check that estimated risks behave like probabilities and remain compatible with estimated event-free survival.

Intermediate 10 min read

What You'll Learn

  • State the risk-set and event-count conditions behind the checks.
  • Verify that each estimated cumulative incidence is nondecreasing and lies between zero and one.
  • Derive the identity linking the sum of all cause-specific estimates to event-free survival.
  • Recognize when a partial sum is appropriate because some causes are not reported.
  • Diagnose arithmetic inconsistencies while distinguishing them from uncertainty or model validity.

Why Check the Estimates Algebraically?

A cumulative incidence estimate is a time-indexed probability estimate for experiencing a particular event type before a competing event. Its plotted step function should not move downward, and its values should stay between zero and one. When estimates for all event causes are reported together, their sum should also agree with the estimated probability of having experienced any event by that time. These properties follow from the estimator’s construction, so they provide useful checks on calculations and output.

They are algebraic checks, not proof that the data, assumptions, or analysis are correct. For example, estimates could pass these checks even if event causes were misclassified or the independent censoring condition were implausible. The earlier material on cumulative incidence estimation provides the underlying event-time setup; here the emphasis is on what the estimates must satisfy internally.

Set-Up and Required Conditions

Let \(t_1<t_2<\cdots<t_K\) be the ordered distinct times at which one or more events are observed. At time \(t_k\), let \(Y_k\) be the number at risk just before that time, and let \(d_{kj}\) be the number of events from cause \(j\). Define \(d_k=\sum_j d_{kj}\), summing over all event causes represented in the analysis. The checks below assume a consistent risk set and event classification: \(Y_k>0\), each \(d_{kj}\geq 0\), and \(d_k\leq Y_k\). Events at a tied time are handled together, using the risk set just before that time.

The estimated event-free survival starts at \(\hat S(0)=1\). The cumulative incidence estimate for cause \(j\) starts at \(\hat F_j(0)=0\). At each event time, update event-free survival using the total event count and update each cause-specific cumulative incidence using its own event count:

$$ \hat S(t_k)=\hat S(t_{k-1})\left(1-\frac{d_k}{Y_k}\right), \qquad \hat F_j(t_k)=\hat F_j(t_{k-1})+ \hat S(t_{k-1})\frac{d_{kj}}{Y_k}. $$

Here \(\hat S(t_{k-1})\) is the estimated event-free probability immediately before the update at \(t_k\). Between event times, these estimates remain constant. Censoring affects who is included in later risk sets, but a censoring time does not itself add an event increment. The same checks apply when delayed entry is present, provided each \(Y_k\) is the correctly constructed risk set for that setting.

Definition: An estimate is nondecreasing if its value at a later time is at least its value at every earlier time. For cumulative incidence, the checks are that each \(\hat F_j(t)\) is nondecreasing and \(0\leq\hat F_j(t)\leq1\). If all event causes are included, the additional compatibility identity is \(\sum_j\hat F_j(t)+\hat S(t)=1\).

Why the Checks Hold

Under the stated count conditions, \(d_{kj}/Y_k\) is nonnegative. Also, \(\hat S(t_{k-1})\) is nonnegative, starting from one and being multiplied by factors between zero and one. Thus the increment added to \(\hat F_j\) at \(t_k\) cannot be negative. Since \(\hat F_j(0)=0\), each cause-specific estimate is nondecreasing and nonnegative.

For the upper bound and the compatibility check, compare the total increase in cumulative incidence at an event time with the decrease in event-free survival. Summing the increments over all causes gives:

$$ \sum_j\left\{\hat F_j(t_k)-\hat F_j(t_{k-1})\right\} = \hat S(t_{k-1})\frac{\sum_jd_{kj}}{Y_k} = \hat S(t_{k-1})\frac{d_k}{Y_k}. $$

The survival update gives the same quantity as its decrease:

$$ \hat S(t_{k-1})-\hat S(t_k) = \hat S(t_{k-1})- \hat S(t_{k-1})\left(1-\frac{d_k}{Y_k}\right) = \hat S(t_{k-1})\frac{d_k}{Y_k}. $$

Therefore, at each event time, the total increase in the cause-specific estimates exactly equals the decrease in event-free survival. Initially, \(\sum_j\hat F_j(0)+\hat S(0)=0+1=1\). Since each update preserves this sum, induction over the ordered event times gives:

$$ \sum_j\hat F_j(t_k)+\hat S(t_k)=1 \qquad\text{for every }k. $$

Each \(\hat F_j(t_k)\) is nonnegative, and the sum of all such estimates is \(1-\hat S(t_k)\), which cannot exceed one. Thus each individual estimate is at most one as well. The identity also says that the estimated probability of any event by time \(t\) is \(1-\hat S(t)\), when all event causes are represented.

Worked Example: Checking Two Causes at Each Event Time

Suppose a hypothetical analysis has two event causes and the following risk sets and event counts. There are no unlisted event causes in this example.

Time\(Y_k\)\(d_{k1}\)\(d_{k2}\)\(d_k\)
\(t_1\)10213
\(t_2\)7123
\(t_3\)4101

At every time, \(Y_k>0\), the counts are nonnegative, and \(d_k\leq Y_k\). The risk sets and counts therefore meet the basic arithmetic conditions for these updates. Initially, \(\hat S=1\) and \(\hat F_1=\hat F_2=0\).

At \(t_1\), the updates are:

$$ \hat S(t_1)=1\left(1-\frac{3}{10}\right)=0.7,\quad \hat F_1(t_1)=0+1\frac{2}{10}=0.2,\quad \hat F_2(t_1)=0+1\frac{1}{10}=0.1. $$

The estimates are nonnegative, and \(0.2+0.1+0.7=1\). At \(t_2\):

$$ \hat S(t_2)=0.7\left(1-\frac{3}{7}\right)=0.4, $$ $$ \hat F_1(t_2)=0.2+0.7\frac{1}{7}=0.3,\qquad \hat F_2(t_2)=0.1+0.7\frac{2}{7}=0.3. $$

Both cause estimates increased, and \(0.3+0.3+0.4=1\). At \(t_3\):

$$ \hat S(t_3)=0.4\left(1-\frac{1}{4}\right)=0.3,\quad \hat F_1(t_3)=0.3+0.4\frac{1}{4}=0.4,\quad \hat F_2(t_3)=0.3+0.4\frac{0}{4}=0.3. $$

The final values satisfy \(0.4+0.3+0.3=1\). Cause 2’s estimate stays flat at \(t_3\) because no cause 2 events occur then. Across the displayed event times, each estimate is nondecreasing and lies between zero and one.

When Only Some Causes Are Reported

The sum-to-one identity applies to the estimates for all event causes represented in the event counts used for the survival update. If a report displays only a subset of causes, its displayed estimates need not sum to \(1-\hat S(t)\). With nonnegative increments for the omitted causes, the partial sum cannot exceed that total failure probability. The difference corresponds to the omitted causes’ cumulative incidence estimates.

Worked Example: Interpreting a Partial Cause Total

Consider a hypothetical analysis with three event causes, but suppose only causes 1 and 2 are displayed. At the first event time, \(Y_1=20\), with \(d_{11}=2\), \(d_{12}=1\), and \(d_{13}=1\). At the second, \(Y_2=16\), with \(d_{21}=0\), \(d_{22}=2\), and \(d_{23}=0\). The counts are nonnegative and do not exceed the risk set at either time.

After the first time, the total event count is four:

$$ \hat S(t_1)=1\left(1-\frac{4}{20}\right)=0.8,\quad \hat F_1(t_1)=0.1,\quad \hat F_2(t_1)=0.05,\quad \hat F_3(t_1)=0.05. $$

At the second time, \(\hat S\) is multiplied by \(1-2/16\), and each cause estimate receives its own event increment:

$$ \hat S(t_2)=0.8\left(1-\frac{2}{16}\right)=0.7, $$ $$ \hat F_1(t_2)=0.1+0.8\frac{0}{16}=0.1,\quad \hat F_2(t_2)=0.05+0.8\frac{2}{16}=0.15,\quad \hat F_3(t_2)=0.05. $$

The all-cause sum is \(0.1+0.15+0.05=0.30=1-0.70\). But the displayed partial sum is \(0.1+0.15=0.25\), which is less than \(1-\hat S(t_2)=0.30\). The difference, \(0.05\), is the estimate for the omitted third cause. A check that incorrectly demands the displayed partial sum equal \(1-\hat S\) would flag a valid calculation.

Diagnostics and Limits of the Checks

A practical audit starts with the event-time table and checks the inputs before interpreting the output. At each time, confirm that \(Y_k\) is positive, event counts are nonnegative integers, and the total event count does not exceed the risk set. Then check the updates: \(\hat S\) should not increase, each \(\hat F_j\) should not decrease, and no estimate should leave the interval from zero to one. When all causes are included, check \(\sum_j\hat F_j(t)+\hat S(t)=1\) at every event time.

A failed check can identify a computational inconsistency, but the pattern helps locate it. A decreasing cause estimate suggests a negative increment or an incorrectly ordered update. A value above one or below zero may indicate an invalid count, an arithmetic error, or inconsistent inputs. A mismatch in the all-cause identity can result from using different event times or risk sets for the CIF and survival calculations, omitting a cause from the sum, or rounding intermediate values too aggressively. Compare unrounded calculations first; displayed values rounded to a few decimal places may differ by a small amount.

The checks have important limits. They do not establish independent censoring, correct event classification, or appropriate study design. Nor do they assess sampling uncertainty: a cumulative incidence estimate can pass every identity and still be imprecise. These checks are also not a substitute for reviewing how ties, delayed entry, and the risk sets were handled. They verify internal mathematical coherence, not the full validity of an analysis.

Worked Example: Finding a Mismatched Update

Return to the first two event times of the two-cause example. After \(t_1\), the values are \(\hat S(t_1)=0.7\), \(\hat F_1(t_1)=0.2\), and \(\hat F_2(t_1)=0.1\). Suppose a calculation mistakenly uses the post-event survival at \(t_2\) to weight the cause increments. The survival update itself gives \(\hat S(t_2)=0.7(1-3/7)=0.4\), but the erroneous CIF updates would be:

$$ \hat F_1(t_2)=0.2+0.4\frac{1}{7}\approx0.2571,\qquad \hat F_2(t_2)=0.1+0.4\frac{2}{7}\approx0.2143. $$

These estimates are still nondecreasing and between zero and one, so checking those properties alone would not detect this mistake. Their sum with survival is approximately \(0.2571+0.2143+0.4=0.8714\), not one. The correct updates use the pre-event survival \(0.7\), giving \(\hat F_1(t_2)=0.3\) and \(\hat F_2(t_2)=0.3\), which restore the identity. This illustrates why the compatibility check complements monotonicity and bounds.

Common Mistake

Wrong reasoning: “The two reported cause estimates sum to less than \(1-\hat S(t)\), so at least one estimate must be wrong.” This conclusion does not follow if the report includes only some causes.

Correction: First establish whether the displayed causes exhaust the event categories used in the survival update. For a partial list, compare its sum with \(1-\hat S(t)\) as an upper bound; equality is expected only when all causes are included. Also distinguish small discrepancies from rounding from larger discrepancies in the underlying calculations.

Key takeaway: With valid risk sets and event counts, every cause-specific estimate is nondecreasing and lies between zero and one. When all causes are included, their sum and estimated event-free survival add to one at every time.

Check Your Understanding

Answer each question, then compare your reasoning with the solutions below.

  1. At one event time, \(\hat S(t_{k-1})=0.6\), \(Y_k=12\), and the two cause counts are 1 and 2. Calculate the survival and both cause-specific updates, assuming their previous estimates are 0.20 and 0.10.
  2. Why can a cause-specific cumulative incidence estimate not decrease under the stated update rule?
  3. All-cause estimates at a time are \(\hat F_1=0.18\), \(\hat F_2=0.12\), and \(\hat S=0.70\). Do they satisfy the compatibility identity?
  4. A report shows one cause estimate of 0.25 and event-free survival of 0.60, but excludes another event cause. Is the partial total necessarily inconsistent? State the relevant bound.
  5. Can monotonicity and the sum-to-one identity establish that the independent censoring condition holds? Explain.

Solutions. (1) The total count is \(d_k=3\), so \(\hat S(t_k)=0.6(1-3/12)=0.45\). The cause increments are \(0.6(1/12)=0.05\) and \(0.6(2/12)=0.10\), giving updated estimates \(0.25\) and \(0.20\). Their sum with survival is \(0.25+0.20+0.45=0.90\); the remaining \(0.10\) is the probability already assigned to earlier events, consistent with the previous values \(0.20+0.10+0.60=0.90\). (2) Its increment is \(\hat S(t_{k-1})d_{kj}/Y_k\), which is nonnegative because each factor is nonnegative. (3) Yes: \(0.18+0.12+0.70=1\). (4) Not necessarily. The partial sum must be no greater than \(1-\hat S=0.40\); \(0.25\leq0.40\), so it is compatible, with the remainder potentially due to the omitted cause. (5) No. These are internal algebraic properties of the estimates and do not establish the censoring assumption or other conditions for valid estimation.

Clinical Biostats