Why the Reporting Grid Matters
A product-integral estimate changes at observed transition times. A reporting grid, by contrast, is a set of times at which someone wants to see the estimate: it might be a regular sequence such as monthly visits, a set of clinically chosen landmarks, or times selected for a figure. These two time sets need not match. The grid controls where values are displayed; it does not create new transition information or alter the event-time calculation.
The practical task is therefore precise: calculate updates at observed event times, carry the current matrix forward unchanged between updates, and report the resulting matrix at each requested time. The convention used here is right-continuous: an event at reporting time \(t\) is included in the value reported at \(t\). A left-limit value, if needed for a different question, is written \(P(t-)\).
Event-Time Product and Assumptions
Consider a finite-state, time-inhomogeneous Markov multi-state model, with states labelled \(1,\ldots,K\). Let \(dN_{jk}(u)\) be the number of observed transitions from state \(j\) to state \(k\) at event time \(u\), for \(j\ne k\), and let \(Y_j(u)\) be the number of individuals in state \(j\) and at risk immediately before \(u\). The estimated transition-hazard increment at \(u\) is assembled into a \(K\)-by-\(K\) matrix.
This definition addresses every row, including one with an empty risk set. For positive risk sets, the diagonal makes each row sum to zero. The event-time update factor is \(I+\Delta\widehat A(u)\), where \(I\) is the identity matrix. Under the usual event-counting setup, the number departing a state at an instant cannot exceed the number at risk just before that instant. Thus each factor has nonnegative entries and rows summing to one. A violation is a signal to inspect the data or risk sets.
The estimate relies on correctly recorded state histories and event times, suitable risk sets, and independent censoring in the sense needed for the Aalen–Johansen estimator. Its transition-probability interpretation also uses the Markov model: conditional on the current state, the future transition law does not additionally depend on earlier path history. The grid procedure below does not repair violations of these assumptions; it only reports the event-time estimate. In particular, the transition estimates and their interpretation are not justified merely because the reported matrices look stochastic.
Let \(a\) be the starting time and let \(u_1<\cdots<u_r\) be the observed transition times in \((a,t]\). With row \(h\) representing the origin state and column \(k\) the destination state, the estimated transition matrix is
The arrow means that factors are multiplied in increasing time order, from left to right. For \(t=a\), the product is empty and equals \(I\). If there is no observed transition time between two successive requested times, the product has no new factor on that interval, so its value is unchanged.
How to Evaluate a Requested Grid
Write the reporting grid in increasing order as \(g_0<g_1<\cdots<g_m\). For each grid time, include every event-time factor in \((a,g_i]\). In particular, an event at \(g_i\) is included in \(\widehat P(a,g_i)\), whereas an event just after \(g_i\) is not. This endpoint rule removes ambiguity when a reporting time coincides with an event time.
Use the observed transition times in the interval of interest. At a shared event time, assemble all observed transition counts into one increment matrix.
Set the product to \(I\) at \(a\), or to the specified starting transition matrix if reporting begins from a different already-computed value.
For every event time \(u\) with \(a<u\le g_i\) not yet processed, multiply the current product on the right by \(I+\Delta\widehat A(u)\). Do not update at other times.
Record the running product at \(g_i\). Check that its entries are nonnegative up to rounding error and each row sums to one, and verify that event times equal to \(g_i\) were processed first.
Carrying a product forward is not the same as interpolating between its neighboring values. The estimate is a step function in time, with jumps at the observed event times. A fine grid can display that step function more smoothly on a plot, but it cannot supply intermediate updates that were not in the observed event-time product.
Worked Example: A Two-State Model on an Irregular Grid
Suppose a hypothetical cohort has two states: state 1 (alive) and state 2 (dead, absorbing). Start at \(a=0\). At time 2, there are \(Y_1(2)=10\) individuals at risk in state 1 and \(dN_{12}(2)=2\) deaths. At time 5, suppose \(Y_1(5)=8\) and \(dN_{12}(5)=2\). Assume no other transitions or censoring that would contradict these risk-set counts. Report the transition matrix at grid times \(0,1,2,4,5,7\).
At time 2, the only nonzero off-diagonal increment is \(2/10=0.2\), so the event factor is
At time 5, the increment is \(2/8=0.25\), giving
The running product starts at \(I\). It remains \(I\) at time 1 because no event time has occurred. At time 2, the update is included, so \(\widehat P(0,2)=B(2)\); it is carried forward to time 4. At time 5, multiply in time order:
There is no later observed event in the stated interval, so the value at time 7 remains this same matrix. The requested outputs are therefore \(I\) at 0 and 1, \(B(2)\) at 2 and 4, and \(B(2)B(5)\) at 5 and 7. In particular, the event at grid time 2 is included in the value reported at 2.
Why Carry-Forward Is Exact
The carry-forward rule follows directly from the finite product, rather than from a numerical approximation. Let \(u_1,\ldots,u_r\) be all event times up to \(t\), and define \(C_0=I\) and \(C_\ell=C_{\ell-1}\{I+\Delta\widehat A(u_\ell)\}\). Between \(u_\ell\) and the next event time, no additional factor appears in the product. Hence for any \(s,t\) satisfying \(u_\ell\le s\le t<u_{\ell+1}\), both \(\widehat P(a,s)\) and \(\widehat P(a,t)\) equal \(C_\ell\). At \(u_{\ell+1}\), the factor for that event time is included and the product becomes \(C_\ell\{I+\Delta\widehat A(u_{\ell+1})\}\). This proves the stepwise, right-continuous form.
The same argument explains why grids can be changed without changing the estimate: evaluating at more times merely repeats an existing running product. It does not split an event-time factor into smaller pieces. Since matrix multiplication is generally not commutative, factors must remain in chronological order; rearranging them can change the result.
Worked Example: Two Updates in a Three-State System
Consider a hypothetical three-state model, starting in state 1 at time 0. At time 2, \(Y_1(2)=10\) and two individuals move from state 1 to state 2. At time 5, \(Y_1(5)=8\) with one transition from state 1 to state 3, and \(Y_2(5)=6\) with three transitions from state 2 to state 3. State 3 has no observed departures. Take the reporting grid \(0,1,2,3,5,6\).
The first update factor is
At time 5, the transition fractions are \(1/8=0.125\) for state 1 to state 3 and \(3/6=0.5\) for state 2 to state 3. The diagonal entries are the negatives of the corresponding row sums of the increment, so the factor is
The product at time 5 is
Thus a subject starting in state 1 has estimated state probabilities \((0.70,0.10,0.20)\) at time 5 under this estimate. The values at 0 and 1 are \(I\); those at 2 and 3 are \(B(2)\); and those at 5 and 6 are \(B(2)B(5)\). Each reported row sums to one. The intermediate grid time 3 does not trigger a fractional share of the time-5 transition.
Empty Risk Sets, Diagnostics, and Failure Modes
A row with \(Y_j(u)=0\) requires explicit handling even when no transition from state \(j\) is observed. Under the definition above, if there are no recorded departures, its increment row is zero and its event factor row is the corresponding row of \(I\). This convention avoids an undefined \(0/0\); it does not assert that a transition hazard could be estimated from an empty risk set. If a departure is recorded despite \(Y_j(u)=0\), the event count and risk set cannot both be correct under the stated setup, so the calculation should stop for investigation.
Worked Example: A Zero-Risk Row at an Event Time
Suppose a hypothetical three-state dataset has an event time \(u=4\) with \(Y_1(4)=5\), \(dN_{12}(4)=1\), and \(Y_2(4)=0\) with no departures recorded from state 2. State 3 also has no departures at this time and has a positive risk set, \(Y_3(4)=2\). Its observed departure count is zero.
For state 1, the increment to state 2 is \(1/5=0.2\), with diagonal increment \(-0.2\). State 2 has an empty risk set and no departures, so its entire increment row is defined as zero. State 3 has a positive denominator but no observed transition, so its increment row is also zero. Therefore,
The factor is well-defined and stochastic. If instead the records also showed a transition from state 2 at time 4, then \(dN_{2k}(4)>0\) with \(Y_2(4)=0\); that is not a case to repair by setting a ratio to zero. It is a risk-set or event-record error requiring resolution.
Useful diagnostics for a grid report include checking that grid times and event times use the same time origin and units, that every event at or before a reporting time was processed exactly once, and that the factor order is chronological. For each reported matrix, inspect row sums and nonnegativity. Small deviations such as \(0.999999\) can arise from rounding, but substantial deviations suggest an incorrect increment, a missing update, or an incorrect multiplication. It is also useful to compare the output at event-time grid points with the directly computed event-time products.
A particularly common mistake is to use a strict endpoint rule and omit events exactly at a grid time. That reports \(P(t-)\) while labelling it \(P(t)\). The correction is to state the convention and use \((a,t]\) for the right-continuous estimate. Another mistake is to interpolate matrix entries between event times. That may produce rows summing to one, but it is a different curve and is not the event-time product integral. Rounding each update heavily before multiplying can also accumulate error; retain adequate numerical precision during computation and round only for presentation.
Choosing a Grid and Knowing Its Limits
A reporting grid should reflect the scientific question and the intended use of the output. A coarse grid is compact and can highlight prespecified landmarks, but it may hide when jumps occurred. A fine grid makes plots and downstream summaries easier to read, but it repeats values over event-free intervals and should not be mistaken for additional temporal resolution. Reporting the event times themselves can be useful when the jump pattern is central.
| Approach | What it reports | Main caution |
|---|---|---|
| Event-time product with carry-forward grid evaluation | The same event-time estimate evaluated at requested times | Endpoint convention and event ordering must be explicit |
| Linear interpolation between reported matrices | A newly defined curve between grid points | It is generally not the estimated event-time product integral |
| Piecewise-constant-intensity matrix exponential | Evolution implied by a specified intensity held constant over intervals | This is a modeling choice, not merely a way to display event-time updates |
The constant-intensity matrix-exponential approach can be appropriate when the model posits intervalwise constant intensities, but it answers a different computational question. Likewise, grid refinement cannot correct dependent censoring, misspecified state definitions, or a failure of the Markov assumption. If a matrix is needed only at a particular horizon, direct event-time accumulation to that horizon is enough; a grid is useful for presentation or repeated evaluation, not a requirement of the estimate.
Check Your Understanding
Answer each question using the right-continuous event-time convention described above. Short solutions follow the questions.
- If the last observed transition before reporting time \(t\) occurred at \(u<t\), and there are no further event times through \(t\), how does the reported product at \(t\) relate to the product just after \(u\)?
- An event occurs exactly at grid time \(g_i\). Is its factor included in \(\widehat P(a,g_i)\) or only at the next grid time?
- At an event time, \(Y_j(u)=0\) and \(dN_{jk}(u)=0\) for every \(k\ne j\). What increment row is used, and what would a positive departure count imply?
- Why can two event-time factors not generally be reordered?
- At an event-free grid time, a reported matrix differs from the preceding grid value. Give one likely computational explanation.
Solutions. (1) It is unchanged: there is no additional factor between \(u\) and \(t\). (2) It is included, because the product uses event times in \((a,g_i]\). (3) Use an all-zero increment row; a positive departure count with zero risk set indicates inconsistent event or risk-set data and must be investigated. (4) Matrix multiplication is generally noncommutative, so changing chronological factor order can change the product. (5) A factor may have been applied at a non-event grid time, applied more than once, or an event time may have been assigned incorrectly.