Signature
r = -log(1 - P) / T; p_t = 1 - exp(-r * t)
| Inputs | Definition | Unit |
|---|---|---|
P | Proportion of patients with at least one episode of the adverse event over the follow-up period T, below 1 | probability from 0 to 1 |
T | Length of the follow-up period over which P was observed | time, in the same unit as t, for example weeks |
t | Length of one model cycle | time, in the same unit as T |
r | Constant adverse event rate implied by the proportion P over the period T | events per patient per unit of time of T |
|---|---|---|
p_t | Probability that an event-free patient has a first episode of the adverse event within one cycle of length t | probability from 0 to 1 |
Function
Adverse event rate to model input function
Maps the adverse event counts in a trial safety table, with their denominators of patients or person-time, to the probability of an event in one model cycle, and maps those probabilities to the expected adverse event cost and QALY loss per patient. The general rate and probability conversions are on the Transition Probability page (HE-FN-TP-001); the records here apply them to adverse event data and add the cost and QALY weighting.
Computational function
Computational function: trial adverse event counts to a per-cycle probability
Takes the counts in a trial safety table, the number of patients with an adverse event and the number at risk, with the follow-up period and the model cycle length, and returns the probability of a first episode in one model cycle. It computes the trial proportion with HE-FM-AER-001 and then rescales it with HE-FM-AER-004 through the implied constant rate, so the inputs are counts rather than the proportion the formula takes. The general conversion from an annual probability is HE-CF-TP-002 on the Transition Probability page.
Inputs and outputs:
n_event: Number of patients with at least one episode of the adverse event during follow-up; required, from 0 up to but not including n_risk. Unit: count of patients.;n_risk: Number of patients at risk at the start of follow-up; required, above zero. Unit: count of patients.;T_follow: Length of the follow-up period; required, above zero. Unit: time, for example weeks.;L_cycle: Length of one model cycle, in the same unit as T_follow; required, above zero. Unit: time.;P_trial: Proportion of patients with an event over follow-up, returned as an intermediate output. Unit: probability from 0 to 1.;r_AE: Constant adverse event rate implied by the proportion, returned as an intermediate output. Unit: events per patient per unit of time.;p_cycle: Probability of a first adverse event within one model cycle. Unit: probability from 0 to 1.Assumption: Every patient is followed for the whole period, the event rate is constant over follow-up, patients leave the at-risk pool after a first episode, and the adverse event is the only exit from the state. With competing exits such as death or progression the rates are converted jointly, as in HE-FM-TP-004.
Worked example (Eighteen per cent over 24 weeks to four-week cycles): In the article's illustrative trial, 36 of 200 patients on the new drug have grade 3 or higher diarrhoea within 24 weeks. The proportion of 0.18 implies a rate of about 0.00827 per patient-week and a four-week probability of about 0.0325.
n_event = 36; n_risk = 200; T_follow = 24; L_cycle = 4; P_trial = 0.18; r_AE = 0.0082688; p_cycle = 0.032534Worked example (Comparator arm at eight per cent over 24 weeks): 16 of 200 patients on the comparator give a proportion of 0.08, a rate of about 0.00347 per patient-week and a four-week probability of about 0.0138.
n_event = 16; n_risk = 200; T_follow = 24; L_cycle = 4; P_trial = 0.08; r_AE = 0.0034742; p_cycle = 0.013801Worked example (Cycle as long as follow-up returns the trial proportion): With a 24-week cycle the function returns the observed proportion of 0.18, a limiting case that checks the implementation.
n_event = 36; n_risk = 200; T_follow = 24; L_cycle = 24; P_trial = 0.18; r_AE = 0.0082688; p_cycle = 0.18Excel:
=1-EXP(LN(1-PatientsWithEvent/PatientsAtRisk)*CycleLength/FollowUp)All three steps in one cell, with the counts in PatientsWithEvent and PatientsAtRisk and the two lengths, in the same time unit, in CycleLength and FollowUp. The equivalent form =1-(1-PatientsWithEvent/PatientsAtRisk)^(CycleLength/FollowUp) gives the same result.R:
ae_cycle_prob <- function(n_event, n_risk, follow_up, cycle_length) { p_trial <- n_event / n_risk; ae_rate <- -log(1-p_trial) / follow_up; 1-exp(-ae_rate * cycle_length) }Vectorised, so one call can return the cycle probabilities for every arm or event type held in parallel vectors.Python:
def ae_cycle_prob(n_event, n_risk, follow_up, cycle_length): p_trial = n_event / n_risk; ae_rate = -math.log(1-p_trial) / follow_up; return 1-math.exp(-ae_rate * cycle_length)Uses the math module, where math.log is the natural logarithm; replacing math with numpy gives the vectorised form.Test (Six cycles reproduce the trial proportion): Compounding the cycle probability over the number of cycles in the follow-up period returns the observed proportion. Expected result: TRUE. Excel check:
=ABS(1-(1-AECycleProb)^(FollowUp/CycleLength)-PatientsWithEvent/PatientsAtRisk)<1E-9Test (Counts allow a conversion): The number of patients with an event is below the number at risk, since a proportion of 1 implies an infinite rate, and both lengths are positive. Expected result: TRUE. Excel check:
=AND(PatientsWithEvent>=0,PatientsWithEvent<PatientsAtRisk,FollowUp>0,CycleLength>0)Common error (Dividing the trial proportion by the number of cycles): Dividing 0.18 by six gives 0.03 per cycle, which over six cycles implies a cumulative risk of about 0.167 rather than the 0.18 observed. The proportion has to pass through the rate before it is rescaled.
Source: Gidwani R, Russell LB. Estimating transition probabilities from published evidence: a tutorial for decision modelers. PharmacoEconomics. 2020;38(11):1153-1164. Equations 8 to 10 on converting a probability observed over one period to a rate and back to a probability for the model cycle.
P_trial = n_event / n_risk; r_AE = -log(1 - P_trial) / T_follow; p_cycle = 1 - exp(-r_AE * L_cycle)
Try this function
Implementations
Excel
Rescaled adverse event probability in one cell
Excel raises the complement of the trial proportion to the ratio of the cycle length to the follow-up period, using named cells in the same time unit.
=1-(1-TrialProportion)^(CycleLength/FollowUp)
Excel
Adverse event cycle probability from a rate in one cell
Excel returns the cycle probability from named cells holding the adverse event rate and the cycle length in the same time unit.
=1-EXP(-AERate*CycleLength)
Assumptions
Constant adverse event rate across the trial period
The risk of a first episode is the same in every week of follow-up, so each cycle on treatment receives the same probability. If events concentrate early, the uniform cycle probability understates the risk in the first cycles.
Event-free patients as the adverse event risk pool
p_t is the probability of a first episode among patients still event-free, so the model removes patients from the at-risk pool after a first episode. If the same probability is applied to the whole cohort in every cycle, recurrence is implied: in the article's example six cycles at about 0.0325 give about 0.195 episodes per patient rather than 0.18, and an adverse event cost of about £351 rather than £324 at £1,800 an episode.
Adverse event as the single exit during the trial period
The rescaling is exact only when the adverse event is the single exit from the state. When death, progression or stopping treatment compete with it, converting each transition separately gives incorrect numbers of patients moving to each state, so the rates are converted jointly (HE-FM-TP-004) or the model is restructured.
Worked examples
Eighteen per cent over 24 weeks rescaled to four-week cycles
The new drug's 24-week proportion of 0.18 implies a rate of about 0.00827 per patient-week and a four-week probability of about 0.0325. Compounded over six cycles, the probability reproduces the observed 0.18, as in the article.
P = 0.18; T = 24; t = 4; r = 0.0082688; p_t = 0.032534
Eight per cent over 24 weeks rescaled to four-week cycles
The comparator's 24-week proportion of 0.08 implies a rate of about 0.00347 per patient-week and a four-week probability of about 0.0138.
P = 0.08; T = 24; t = 4; r = 0.0034742; p_t = 0.013801
Common errors
Dividing a 24-week adverse event proportion by six cycles
Dividing 0.18 by six gives 0.03 per four-week cycle. Over six cycles that implies a cumulative risk of about 0.167, not the 0.18 observed. In a model that tracks event-free patients the shortcut understates the new drug's cumulative risk by 1.3 percentage points and its adverse event cost by about £23 per patient at £1,800 an episode.
Using a per patient-year adverse event rate with a cycle in weeks
The rate of about 0.00827 per patient-week is about 0.430 per patient-year, taking 52 weeks to a year. Entering 0.430 with a cycle length of 4 gives a cycle probability of about 0.821 instead of 0.0325. The cycle length has to be 4/52 of a year when the rate is per year.
Sources
Rescaling an adverse event probability to the model cycle length
Gidwani R, Russell LB. Estimating transition probabilities from published evidence: a tutorial for decision modelers. PharmacoEconomics. 2020;38(11):1153-1164. Equations 8 to 10, which convert a probability to a rate on the assumption that events occurred evenly over the study period and back to a probability for the cycle length, and the section showing that these two-state equations do not give correct probabilities when three or more transitions can occur in a cycle.
Rate and probability conversion for adverse event cycle inputs
Fleurence RL, Hollenbeak CS. Rates and probabilities in economic modelling: transformation, translation and appropriate application. PharmacoEconomics. 2007;25(1):3-6. Editorial on the appropriate conversion of rates and probabilities when changing time intervals in economic models.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0