The Hazard Ratio Is Not a Risk Ratio: Proportional Hazards, Restricted Mean Survival Time and Model Inputs

On this page
อ่านฉบับภาษาไทย (Thai version)
Abstract
A district hospital committee is deciding whether to pay for C, a new treatment for a chronic condition. A five-year study found 60 of every 100 patients on usual care, A, alive at five years, and its report gives C a hazard ratio of 0.70 for death. A hazard ratio compares how fast deaths happen in two groups among the people still alive at each moment. One member reads it as 30% fewer deaths: 28.0 per 100 instead of 40.0, but the survival curves say 30.1. We first count deaths per person-year, the incidence rate; a ratio of two rates equals the hazard ratio only while both speeds stay constant. We then show why the risk ratio, the share who die within five years on C divided by the share on A (30.1 / 40.0), is 0.75, and test when one number fits five years. Last, we work out the 105 days C adds per patient and the model's yearly chances of dying.
A five-year report on the committee's desk
A district hospital committee must decide whether to pay for C, a new treatment for adults newly diagnosed with a chronic condition. A study followed patients for five years and counted deaths from any cause. On usual care, A, 60 of every 100 patients were still alive at five years, so 40 of them had died. These are illustrative numbers for teaching, not results of a real study.
The report sums up C in one number, 0.70. It compares how fast patients died on C with how fast they died on A, moment by moment. One committee member reads it as "C cuts deaths by 30%": 0.70 times 40 deaths per 100 leaves 28.0. Another asks how much longer patients on C live, because the economic model counts time alive.
The member's 28.0 is wrong, and the reason is the core idea of survival analysis. This article builds the five-year picture from the two numbers on the desk: 60 alive per 100 on A, and 0.70. It counts deaths per person-year, as the study did. It ends with what the model needs: rates and curves for each treatment, the deaths and time alive they imply, and a chance of dying for each year.
Start with the survival curve
Read first on this site. These two posts teach the survival curve, follow-up that stops early, the Kaplan-Meier method and competing events in full. This section keeps only what the committee's model needs.
- Kaplan-Meier and Cox for a First Event: KM Describes, Cox Models
- Why 1 Minus Kaplan-Meier Overstates Risk When Patients Can Die First
A survival curve shows, at each point in time, the share of patients still alive. It starts at 1.00, when everyone is alive, and can only go down. On A it reaches 0.60 at five years: 60 of every 100 patients are alive then.
The share who have died by that time is the risk of death within five years: 1.00 minus 0.60, or 40.0%. The time belongs to the number. A risk of 40.0% within five years says nothing yet about the first year.
Real studies stop watching some patients early, which is called censoring. The Kaplan-Meier method counts each patient only while watched. Our event is death from any cause, so no other event can get in its way. If the model's event were a complication, an earlier death would compete with it, and one minus the simple curve would overstate the risk [1].
Count deaths per person-year: the incidence rate
Read first on this site. These two posts teach rates, person-time and the Poisson model in full. This section keeps only the counts the committee's case needs.
- Incidence Rate [IR] and Incidence Rate Ratio [IRR]: Analysis of Rates in Clinical Epidemiology Using Stata
- Rates, Poisson Regression, and the Missing Lambda Backbone
A share alive at five years is one way to read a study. The other is to count deaths against the time patients were watched. Picture the study with 10,000 patients starting each treatment, each watched until death or the end of year 5.
On A, 4,000 of the 10,000 die within five years. Now add up the years every patient was alive and watched. A patient who dies part-way through adds only the time lived; a survivor adds the full five years. A's patients give 39,152 person-years, and 4,000 deaths over 39,152 person-years is 102.2 deaths per 1,000 person-years.
Deaths divided by the time at risk is called the incidence rate, as in Incidence, Prevalence and the Right Denominator: The Epidemiology Beneath Cost-of-Illness and Markov Models. The time at risk, added up, is called person-time. The rate is a speed, deaths per unit of time watched, not a share of people. On C, 3,006 die over 42,037 person-years: 71.5 deaths per 1,000 person-years.
Patients on C live longer, so they add more person-years and fewer deaths. Divide one speed by the other: 71.5 over 102.2 is 0.70. This is the incidence rate ratio (IRR), a ratio of two speeds over the whole follow-up. It is not a risk ratio, because its denominators are person-years, not people.
A study gets the same number from a Poisson model, the regression for counts of events over time. The deaths are the outcome. The log of each group's person-years enters as an offset, a term whose coefficient is fixed at 1, so the model compares deaths per person-year.
In R, glm(deaths ~ arm, family = poisson, data = trial, offset = log(person_years)) returns 0.70, as the box below shows.
# Counting deaths and person-years: 10,000 patients start each treatment, watched up to five years.
survival_a5 <- 0.60; hazard_ratio <- 0.70; patients <- 10000; years <- 5
f <- function(x, digits) formatC(x, digits, format = "f", big.mark = ",")
speed <- -log(survival_a5) / years * c(1, hazard_ratio)
deaths <- round(patients * (1 - exp(-speed * years)))
person_years <- patients * (1 - exp(-speed * years)) / speed
trial <- data.frame(arm = c("A", "C"), deaths = deaths, person_years = person_years)
fit <- glm(deaths ~ arm, family = poisson, data = trial, offset = log(person_years))
cat("Deaths, A and C:", f(deaths, 0), "\n")
cat("Person-years, A and C:", f(person_years, 0), "\n")
cat("Deaths per 1,000 person-years, A and C:", f(1000 * deaths / person_years, 1), "\n")
cat("Incidence rate ratio from the Poisson model, C to A:", f(exp(coef(fit)[["armC"]]), 2), "\n")
Deaths, A and C: 4,000 3,006
Person-years, A and C: 39,152 42,037
Deaths per 1,000 person-years, A and C: 102.2 71.5
Incidence rate ratio from the Poisson model, C to A: 0.70
The hazard: how fast deaths happen among those still alive
Read first on this site. These two posts explain in full how an average event rate differs from the rate at each moment. Here we need that step only for A and C.
- Incidence Rate vs Hazard: Understanding Average and Instantaneous Event Rates in Survival Analysis
- Incidence Rate, Hazard, and Cox Regression: Distinctions in Time-to-Event Research
The rate above is an average over five years of watching. Shrink the window to a single moment and count only the patients still alive at that moment. The speed of death then is the hazard: the instantaneous rate among those still event-free. A study reports this speed, and an economic model steps forward in time with it.
The study gives only one point on A's curve, 60 alive at five years. So we assume the simplest shape: deaths happen at a steady speed, and every year keeps the same share of those alive at its start. Five equal years must end at 0.60 alive. Try 0.90 a year: 0.90 × 0.90 × 0.90 × 0.90 × 0.90 leaves 0.59, slightly too low, so the share kept each year is a little higher, 0.903.
Watch it act on 100 patients. In the first year 9.7 die, leaving 90.3. In the second year the same share is lost from only those 90.3, so fewer die. The number alive falls to 81.5, then 73.6, 66.5 and finally 60.0.
In symbols, the share kept each year is the fifth root of 0.60: $0.60^{1/5}=0.903$.
The deaths shrink each year although the speed does not, because the speed applies only to those still alive. That is the difference between a hazard and a risk: the hazard is a speed among the living, and the risk counts everyone who has died since the start.
Studies state the speed per person-year, and ln, the natural logarithm, turns a share kept into one: $-\ln 0.60 = 0.511$ over five years, and 0.511 divided by 5 is 102.2 deaths per 1,000 person-years.
That is the number the count gave, because on A the speed never changes.
One subtlety: 100 patients watched for a whole year would give a little over 10 deaths at this speed, yet only 9.7 die, because each patient who dies stops adding person-years part-way through.
In symbols, a steady hazard $h$ leaves $S(t)=e^{-ht}$ alive after $t$ years, where $e$ is the number that ln undoes, so $h=-\ln S(5)/5$.
The hazard ratio compares two speeds
Read first on this site. This post teaches the Cox model in full. Here we need only what it reports and what it leaves out.
The study did not report C's curve. It reported how C changes the speed. On A the speed is 102.2 deaths per 1,000 person-years, and 0.70 times that is 71.5 on C. At every moment, patients on C who are still alive die at 0.70 times the speed of patients on A who are still alive.
That 0.70 is the hazard ratio. A hazard ratio compares how fast events happen in two groups among the people still event-free at each moment; it is not the ratio of the risks a patient will experience over a period. In symbols, $HR = h_C(t)/h_A(t)$. The Cox model, the regression most studies of time to death use, estimates it without drawing either curve, so the report needs A's curve beside it.
Now build C's curve from A's. A steady speed $h$ leaves $e^{-ht}$ alive, and 0.70 times that speed leaves $e^{-0.70ht}=(e^{-ht})^{0.70}$. So the whole survival curve is raised to the power 0.70: $S_C(t)=S_A(t)^{HR}$ whenever the hazard ratio stays the same over time, and at five years $0.60^{0.70}=0.699$. The worked example below follows every step.
From one hazard ratio to deaths by five years
Two inputs only: 0.60 alive at five years on A, and a hazard ratio of 0.70. Every step can be checked with a calculator from the numbers shown in it.
-
The speed on A
\[ h_A=\frac{-\ln 0.60}{5}\times 1000=\frac{0.511}{5}\times 1000=102.2 \]
A steady speed that leaves 0.60 alive after five years: 102.2 deaths per 1,000 person-years.
-
The speed on C
\[ h_C=0.70\times 102.2=71.5 \]
The hazard ratio multiplies the speed, not the deaths: 71.5 deaths per 1,000 person-years.
-
Survival at five years on C
\[ S_C(5)=0.60^{0.70}=0.699 \]
A lower speed for five years leaves 0.699 alive.
-
Deaths per 100 by five years
\[ 100\times(1-0.60)=40.0,\quad 100\times(1-0.699)=30.1 \]
The risks of death within five years are 40.0% on A and 30.1% on C.
-
Divide and subtract the risks
\[ \frac{30.1}{40.0}=0.75,\quad 40.0-30.1=9.9 \]
Dividing one group's risk by the other's gives the risk ratio, 0.75, not 0.70; subtracting gives 9.9 deaths prevented per 100 patients within five years.
-
Patients treated per death prevented
\[ \frac{100}{9.9}=10.1\;\to\;11 \]
Rounded up, 11 patients must receive C for five years to prevent one death: the number needed to treat (NNT).
Result: One hazard ratio of 0.70 gives 30.1 deaths per 100 on C against 40.0 on A: a risk ratio of 0.75, 9.9 deaths prevented per 100 patients and an NNT of 11 over five years.
Why 28.0 was wrong
So the member's 28.0 was too low. Multiplying 40.0 deaths by 0.70 treats a ratio of speeds as a ratio of deaths. It counts 12.0 deaths prevented per 100 patients where the curves give 9.9, and the model would carry that excess into every later number. The risk ratio and the number needed to treat are taught in full in Risk Ratio, Odds Ratio, Risk Difference and NNT: One 2×2 Table, Four Answers.
# Five years on usual care A and on C: one hazard ratio turned into deaths per 100.
survival_a <- 0.60; hazard_ratio <- 0.70; years <- 5
f <- function(x, digits) formatC(x, digits, format = "f")
hazard_a <- -log(survival_a) / years; hazard_c <- hazard_ratio * hazard_a
deaths_a <- 100 * (1 - survival_a); deaths_c <- 100 * (1 - survival_a^hazard_ratio)
fewer <- deaths_a - deaths_c; misread_c <- hazard_ratio * deaths_a
cat("Minus log of 0.60:", f(-log(survival_a), 3), "\n")
cat("Deaths per 1,000 person-years, A and C:", f(1000 * c(hazard_a, hazard_c), 1), "\n")
cat("Survival at five years on C:", f(survival_a^hazard_ratio, 3), "\n")
cat("Deaths per 100 by five years, A and C:", f(c(deaths_a, deaths_c), 1), "\n")
cat("Risk ratio:", f(deaths_c / deaths_a, 2), " fewer deaths per 100:", f(fewer, 1), "\n")
cat("NNT:", f(100 / fewer, 1), "rounded up to", ceiling(100 / fewer), "\n")
cat("Misread, deaths on C and fewer deaths:", f(c(misread_c, deaths_a - misread_c), 1), "\n")
Minus log of 0.60: 0.511
Deaths per 1,000 person-years, A and C: 102.2 71.5
Survival at five years on C: 0.699
Deaths per 100 by five years, A and C: 40.0 30.1
Risk ratio: 0.75 fewer deaths per 100: 9.9
NNT: 10.1 rounded up to 11
Misread, deaths on C and fewer deaths: 28.0 12.0
When the rate ratio equals the hazard ratio, and when it does not
On A and C the speeds never change. So the five-year rates, 102.2 and 71.5 deaths per 1,000 person-years, are also the speeds at every moment. Their ratio, the incidence rate ratio of 0.70, is then exactly the hazard ratio.
That holds exactly when both hazards stay constant over the follow-up. When they change, the five-year rate ratio is an average that depends on how the person-years are spread over time, and it usually differs from the hazard ratio.
Now suppose the disease speeds up. On A, 5 of every 100 patients die in the first two years and 35 more in the next three, so 60 are still alive at five years, as before. The speed on A is 25.6 deaths per 1,000 person-years in years 1 to 2 and 153.2 in years 3 to 5.
C still works at 0.70 at every moment, so its speeds are 18.0 and then 107.2. The hazard ratio is still 0.70. A Cox model estimates 0.70 here, because at each death it compares only the patients still alive, whatever the shape of A's speed.
Now count over the whole five years, as in the rate section. On A, 500 of 10,000 die in years 1 to 2, over 19,496 person-years, and 3,500 die in years 3 to 5, over 22,849 person-years. Together that is 4,000 deaths over 42,345 person-years, 94.5 per 1,000. On C the same steps give 3,006 deaths over 44,394 person-years, 67.7 per 1,000.
C's five-year survival is still $0.60^{0.70}=0.699$, as under steady speeds. Yet the incidence rate ratio is 67.7 over 94.5, which is 0.72, not 0.70.
Why the gap? C keeps more patients alive into years 3 to 5, when the speed is high. On A, 22,849 / 42,345 = 54.0% of the person-years fall in years 3 to 5; on C, 55.7% do. That pulls C's five-year average up, and the ratio of the two averages moves toward 1.
Keep the two periods apart and each period's rate ratio is 0.70. A Poisson model with the period in it returns 0.70 again, as the last box below shows.
So an economic model should not take one five-year rate ratio, or one hazard ratio, and multiply it onto a probability. It takes the rates period by period, or the whole curves, and turns each rate into the chance of dying within one model step. The series teaches that conversion in Rates, Probabilities and Transition Probabilities: Keep Time in the Calculation. The last section of this article works the yearly steps for A and C.
# A disease that speeds up: few deaths in years 1-2, many in years 3-5; C at 0.70 of A throughout.
alive_a2 <- 0.95; alive_a5 <- 0.60; hazard_ratio <- 0.70; patients <- 10000
f <- function(x, digits) formatC(x, digits, format = "f", big.mark = ",")
speed_a <- c(-log(alive_a2) / 2, -log(alive_a5 / alive_a2) / 3)
speed <- cbind(A = speed_a, C = hazard_ratio * speed_a)
start <- patients * rbind(1, alive_a2^c(1, hazard_ratio))
deaths <- start * (1 - exp(-speed * c(2, 3))); person_years <- deaths / speed
cat("Deaths per 1,000 person-years in years 1-2, A and C:", f(1000 * speed[1, ], 1), "\n")
cat("Deaths per 1,000 person-years in years 3-5, A and C:", f(1000 * speed[2, ], 1), "\n")
cat("On A, deaths in years 1-2 and in years 3-5:", f(deaths[, "A"], 0), "\n")
cat("On A, person-years in years 1-2 and in years 3-5:", f(person_years[, "A"], 0), "\n")
cat("Over five years, deaths on A and C:", f(colSums(deaths), 0), "\n")
cat("Over five years, person-years on A and C:", f(colSums(person_years), 0), "\n")
Deaths per 1,000 person-years in years 1-2, A and C: 25.6 18.0
Deaths per 1,000 person-years in years 3-5, A and C: 153.2 107.2
On A, deaths in years 1-2 and in years 3-5: 500 3,500
On A, person-years in years 1-2 and in years 3-5: 19,496 22,849
Over five years, deaths on A and C: 4,000 3,006
Over five years, person-years on A and C: 42,345 44,394
# The same disease: the two five-year averages, and where each treatment's person-years fall.
alive_a2 <- 0.95; alive_a5 <- 0.60; hazard_ratio <- 0.70; patients <- 10000
f <- function(x, digits) formatC(x, digits, format = "f")
speed_a <- c(-log(alive_a2) / 2, -log(alive_a5 / alive_a2) / 3)
speed <- cbind(A = speed_a, C = hazard_ratio * speed_a)
start <- patients * rbind(1, alive_a2^c(1, hazard_ratio))
deaths <- start * (1 - exp(-speed * c(2, 3))); person_years <- deaths / speed
rate <- colSums(deaths) / colSums(person_years)
cat("Deaths per 1,000 person-years over five years, A and C:", f(1000 * rate, 1), "\n")
cat("Person-years in years 3-5, A and C (%):", f(100 * prop.table(person_years, 2)[2, ], 1), "\n")
cat("Five-year rate ratio, C to A:", f(rate[["C"]] / rate[["A"]], 2), "\n")
Deaths per 1,000 person-years over five years, A and C: 94.5 67.7
Person-years in years 3-5, A and C (%): 54.0 55.7
Five-year rate ratio, C to A: 0.72
# The same patients in a Poisson model: one rate per treatment, then a rate per period as well.
alive_a2 <- 0.95; alive_a5 <- 0.60; hazard_ratio <- 0.70; patients <- 10000
f <- function(x, digits) formatC(x, digits, format = "f")
speed_a <- c(-log(alive_a2) / 2, -log(alive_a5 / alive_a2) / 3)
speed <- c(speed_a, hazard_ratio * speed_a)
dying <- patients * c(1, alive_a2, 1, alive_a2^hazard_ratio) * (1 - exp(-speed * c(2, 3)))
trial <- data.frame(arm = rep(c("A", "C"), each = 2), period = c("years 1-2", "years 3-5"),
deaths = round(dying), person_years = dying / speed)
one_rate <- glm(deaths ~ arm, family = poisson, data = trial, offset = log(person_years))
two_periods <- update(one_rate, . ~ . + period)
cat("Rate ratio with one rate per treatment, C to A:", f(exp(coef(one_rate)[["armC"]]), 2), "\n")
cat("Rate ratio with a rate per period too, C to A:", f(exp(coef(two_periods)[["armC"]]), 2), "\n")
Rate ratio with one rate per treatment, C to A: 0.72
Rate ratio with a rate per period too, C to A: 0.70
Why the risk ratio drifts away from the hazard ratio
Follow the two curves year by year. The table below gives the patients alive per 100 at the end of each year. Its last column divides the deaths so far: the risk ratio rises from 0.71 after one year to 0.75 after five, while the hazard ratio is 0.70 in every row.
The climb has a simple cause: the hazard ratio compares speeds among those still alive, while the risk ratio counts everyone who has died since the start. As deaths pile up in both groups, the two totals move closer together. If the same speeds held for 20 years, 87.0 would have died on A and 76.1 on C, a risk ratio of 0.87. In a long enough study nearly everyone dies in both groups, and the ratio creeps toward 1.
The two curves, year by year
| Year | Alive per 100 on A | Alive per 100 on C | Risk ratio of deaths so far |
|---|---|---|---|
| 1 | 90.3 | 93.1 | 0.71 |
| 2 | 81.5 | 86.7 | 0.72 |
| 3 | 73.6 | 80.7 | 0.73 |
| 4 | 66.5 | 75.1 | 0.74 |
| 5 | 60.0 | 69.9 | 0.75 |
# Year by year at a steady speed of death: the table of who is alive on A and on C.
survival_a5 <- 0.60; hazard_ratio <- 0.70; years <- 1:5
f <- function(x, digits) formatC(x, digits, format = "f")
alive_a <- round(100 * survival_a5^(years / 5), 1)
alive_c <- round(100 * survival_a5^(hazard_ratio * years / 5), 1)
cat("Alive per 100 on A, years 1 to 5:", f(alive_a, 1), "\n")
cat("Alive per 100 on C, years 1 to 5:", f(alive_c, 1), "\n")
cat("Risk ratio, years 1 to 5:", f((100 - alive_c) / (100 - alive_a), 2), "\n")
dead20 <- 100 * (1 - survival_a5^(4 * c(1, hazard_ratio)))
cat("Dead per 100 at 20 years, A, C:", f(dead20, 1), "ratio", f(dead20[2] / dead20[1], 2), "\n")
slices <- function(alive) sum((c(100, alive[-5]) + alive) / 2)
table_years <- c(slices(alive_a), slices(alive_c))
cat("Years alive per 100 in 5 years, A, C, gap:", f(c(table_years, diff(table_years)), 2), "\n")
Alive per 100 on A, years 1 to 5: 90.3 81.5 73.6 66.5 60.0
Alive per 100 on C, years 1 to 5: 93.1 86.7 80.7 75.1 69.9
Risk ratio, years 1 to 5: 0.71 0.72 0.73 0.74 0.75
Dead per 100 at 20 years, A, C: 87.0 76.1 ratio 0.87
Years alive per 100 in 5 years, A, C, gap: 391.90 420.55 28.65
One number for five years: the proportional hazards assumption
Our C has the same 0.70 at every moment, so one number describes all five years. Real treatments need not behave that way: a drug may take a year to work, or its effect may fade.
Suppose C did nothing in the first year and then worked at 0.70. Patients on C would follow A's curve to 90.3 alive per 100 at one year, and only then die more slowly. Over five years the ratio of speeds averages one year at 1.00 and four at 0.70: (1.00 + 0.70 × 4) / 5 = 0.76. So survival at five years is $0.60^{0.76}=0.678$: 32.2 deaths per 100 patients, 7.8 fewer than on A instead of 9.9.
In that version of C the ratio of speeds is 1.00 in year 1 and 0.70 afterwards. When the ratio stays the same over the whole follow-up, the hazards are called proportional; here they are not. One hazard ratio fitted to such data is a blend of 1.00 and 0.70 that describes no single year.
Three checks are common. First, look at the two survival curves: a gap that opens only late, or closes again, is a warning. Second, plot ln(-ln S) for each group against time; under proportional hazards the two lines stay a constant distance apart. Third, ask a statistician for a formal test of whether the hazard ratio changes with time (the Schoenfeld residual test); a test that finds nothing in a small study is not proof.
Even in a randomised study, a hazard ratio for a later period compares the survivors in each arm, and they can differ. By year 3, more of the frailest patients on A have already died. The whole curves and the time alive avoid this [2].
# If C did nothing in year 1 (ratio 1.00) and then worked at 0.70: deaths by five years.
survival_a5 <- 0.60; ratio_year1 <- 1.00; hazard_ratio <- 0.70; delay <- 1
f <- function(x, digits) formatC(x, digits, format = "f")
power <- (ratio_year1 * delay + hazard_ratio * (5 - delay)) / 5
survival_c <- survival_a5^power
cat("Average ratio over five years, the power on 0.60:", f(power, 2), "\n")
cat("Survival at five years on C:", f(survival_c, 3), "\n")
cat("Deaths per 100 by five years on C:", f(100 * (1 - survival_c), 1), "\n")
cat("Fewer deaths per 100 than on A:", f(100 * (survival_c - survival_a5), 1), "\n")
Average ratio over five years, the power on 0.60: 0.76
Survival at five years on C: 0.678
Deaths per 100 by five years on C: 32.2
Fewer deaths per 100 than on A: 7.8
Time alive: the area under the curve
Read first on this site. This post teaches the area under a survival curve in full. Here we need only the days it gives the committee's model.
The economic model does not count deaths alone; it counts time alive. A treatment that delays deaths adds time even if the same people die later. So the second member's question, how much longer patients on C live, needs a measure in days or years.
Think of the first five years in yearly slices. In any slice, the time the group lives is the share still alive times the length of the slice. Adding the slices adds up the area under the survival curve, so that area is the average time alive, and the area between two curves is the extra time alive.
Use the table above. In year 1 the patients alive on A fall from 100 to 90.3 per 100 patients, so on average about (100 + 90.3) / 2 of them are alive through that year. Doing this for all five years and adding gives 391.90 years of life per 100 patients on A and 420.55 on C, a gap of 28.65 years per 100 patients.
The slices join the yearly points with straight lines, so they come close but are not exact. The exact areas, in the R box below, are 1,430 days alive on A and 1,535 on C out of the first 1,826 days. C adds 105 days per patient, or 0.288 years, which is 28.8 years per 100 patients. The area is also the person-years counted at the start, shared out: 39,152 person-years among 10,000 patients on A is 1,430 days each.
This average is called the restricted mean survival time (RMST): the mean time alive up to a stated horizon $\tau$, here five years. In symbols $RMST(\tau)=\int_0^{\tau}S(t)\,dt$, where the sign $\int$ means adding up thin slices of the area from 0 to $\tau$. It needs no assumption about proportional hazards, so it reads the same way for the delayed version of C, which adds 64 days instead of 105 days [3].
Our days rest on the steady-speed assumption for A, because the study gave only one point on its curve. A real report shows the whole curve, and the area is taken under that.
The horizon must be stated and must sit inside the follow-up. A restricted mean up to five years says nothing about year 6; that part of the model is extrapolation, a forecast beyond the data that needs its own evidence.
# Restricted mean survival time: the exact area under each survival curve up to five years.
survival_a5 <- 0.60; hazard_ratio <- 0.70; horizon <- 5; delay <- 1
f <- function(x, digits) formatC(x, digits, format = "f")
hazard_a <- -log(survival_a5) / horizon
alive <- function(t, ratio, start) exp(-hazard_a * (pmin(t, start) + ratio * pmax(0, t - start)))
area <- function(ratio, start = 0) integrate(alive, 0, horizon, ratio = ratio, start = start)$value
days <- 365.25 * c(area(1), area(hazard_ratio), area(hazard_ratio, delay))
cat("Days in the first five years:", round(365.25 * horizon), "\n")
cat("Days alive on average, A and C:", round(days[1:2]), "\n")
cat("Days gained per patient, and if C waits a year:", round(days[2:3] - days[1]), "\n")
cat("Years gained per patient:", f((days[2] - days[1]) / 365.25, 3), "\n")
cat("Years gained per 100 patients:", f(100 * (days[2] - days[1]) / 365.25, 1), "\n")
Days in the first five years: 1826
Days alive on average, A and C: 1430 1535
Days gained per patient, and if C waits a year: 105 64
Years gained per patient: 0.288
Years gained per 100 patients: 28.8
What goes into the economic model
An economic model of this kind follows a group of patients forward in fixed steps, often one year, and the modelling article builds one. At each step it needs the chance of dying within that step (for A that is 9.7% a year, for C 6.9%, called the yearly chance of dying) for the patients alive at its start. It takes that chance from the rates and the curves, period by period, never from one hazard ratio laid on a probability.
The hazard ratio acts on the share that stays alive, not on the chance of dying. Raise A's yearly share kept, $1-p_A$, to the power 0.70: $p_C = 1-(1-p_A)^{HR}$, not $HR\times p_A$. The worked example shows the difference: close for one-year steps, wrong for long ones [4].
Our illustrative 0.70 comes without an interval. A real hazard ratio has one, and A's curve has its own uncertainty; both must reach the model instead of one fixed number. Anything beyond five years is a forecast, so keep it as a separate, stated assumption [5].
The model's yearly steps
A speed of 102.2 deaths per 1,000 person-years, held for one year, leaves $e^{-0.1022}=0.903$ alive, so 9.7% die: the same 9.7% as in the year-by-year table above. The rates-and-probabilities article, Rates, Probabilities and Transition Probabilities: Keep Time in the Calculation, teaches this conversion in full. Each step below uses the numbers shown in it.
-
A's yearly chance of dying
\[ 0.60^{1/5}=0.903,\quad p_A=1-0.903=9.7\% \]
Five equal years that end at 0.60 keep 0.903 of those alive each year.
-
C's yearly chance of dying
\[ 0.903^{0.70}=0.931,\quad p_C=1-0.931=6.9\% \]
The hazard ratio is applied as a power to the share kept.
-
Check over five steps
\[ 100\times(1-0.931^{5})=30.1 \]
30.1 deaths per 100 after five yearly steps: C's curve again.
-
The shortcut
\[ 0.70\times 9.7\%=6.8\%,\quad 100\times(1-0.932^{5})=29.7 \]
Used in each of five yearly steps, the shortcut gives 29.7 deaths per 100 instead of 30.1, a small error. Used once on the five-year 40.0, it gives the member's 28.0.
Result: The model receives 9.7% and 6.9% as yearly chances of dying, or the two curves themselves. Per 100 patients treated, that is 9.9 deaths prevented and 28.8 years alive gained within five years, before any quality weight or price.
# One-year steps for the economic model: the chance of dying within a year on A and on C.
survival_a5 <- 0.60; hazard_ratio <- 0.70
f <- function(x, digits) formatC(x, digits, format = "f")
cat("Keeping 0.90 a year for five years leaves:", f(0.90^5, 2), "\n")
cat("Speed of death on A per person-year:", f(-log(survival_a5) / 5, 4), "\n")
step_a <- 1 - survival_a5^(1 / 5)
step_c <- 1 - (1 - step_a)^hazard_ratio; shortcut_c <- hazard_ratio * step_a
cat("Chance of dying within a year on A (%):", f(100 * step_a, 1), "\n")
cat("On C, correct and shortcut (%):", f(100 * c(step_c, shortcut_c), 1), "\n")
cat("Staying alive each year on A, then C correct and shortcut:",
f(1 - c(step_a, step_c, shortcut_c), 3), "\n")
cat("Deaths per 100 after five yearly steps on C, correct and shortcut:",
f(100 * (1 - (1 - c(step_c, shortcut_c))^5), 1), "\n")
Keeping 0.90 a year for five years leaves: 0.59
Speed of death on A per person-year: 0.1022
Chance of dying within a year on A (%): 9.7
On C, correct and shortcut (%): 6.9 6.8
Staying alive each year on A, then C correct and shortcut: 0.903 0.931 0.932
Deaths per 100 after five yearly steps on C, correct and shortcut: 30.1 29.7
Terms as we use them
- Survival curve (เส้นการรอดชีพ)
- The share of patients still alive at each time: 0.60 at five years on A.
- Censoring (การเซนเซอร์)
- Follow-up that stops before the event is seen; the patient counts only while watched.
- Person-time (เวลาติดตามรวม (คน-ปี))
- The time each patient was watched while still at risk, added up: 39,152 person-years for 10,000 patients on A.
- Incidence rate (อัตราอุบัติการณ์)
- Events divided by person-time, an average speed over a period: 102.2 deaths per 1,000 person-years on A.
- Incidence rate ratio (IRR) (อัตราส่วนอัตราอุบัติการณ์)
- One group's incidence rate divided by the other's, from a Poisson model with log person-time as the offset: 0.70 for C against A.
- Hazard (ฮาซาร์ด)
- The speed of death at each moment among those still alive: 102.2 per 1,000 person-years on A, where the speed never changes.
- Hazard ratio (อัตราส่วนฮาซาร์ด)
- One group's hazard divided by the other's at each moment: 0.70 for C against A.
- Risk ratio (อัตราส่วนความเสี่ยง)
- The deaths so far in one group divided by the other's: 0.75 at five years.
- Proportional hazards (ฮาซาร์ดเป็นสัดส่วน)
- The assumption that the hazard ratio stays the same over the whole follow-up.
- RMST (เวลารอดชีพเฉลี่ยแบบจำกัดช่วง)
- The mean time alive up to a stated horizon, the area under the curve: 1,430 days on A.
- Yearly chance of dying (โอกาสเสียชีวิตรายปี)
- The chance of dying within one model step among those alive at its start: 9.7% on A.
References
- Putter H, Fiocco M, Geskus RB. Tutorial in biostatistics: competing risks and multi-state models. Stat Med. 2007;26(11):2389-2430. doi:10.1002/sim.2712
- Hernan MA. The hazards of hazard ratios. Epidemiology. 2010;21(1):13-15. doi:10.1097/EDE.0b013e3181c1ea43
- Royston P, Parmar MK. Restricted mean survival time: an alternative to the hazard ratio for the design and analysis of randomized trials with a time-to-event outcome. BMC Med Res Methodol. 2013;13:152. doi:10.1186/1471-2288-13-152
- Fleurence RL, Hollenbeak CS. Rates and probabilities in economic modelling: transformation, translation and reporting. PharmacoEconomics. 2007;25(1):3-6. doi:10.2165/00019053-200725010-00002
- Briggs A, Claxton K, Sculpher M. Decision Modelling for Health Economic Evaluation. Oxford: Oxford University Press; 2006. ISBN 9780198526629
The series, in learning order
- Health Economics Series Guide: Read the Evidence Before the Costs
- Incidence, Prevalence and the Right Denominator: The Epidemiology Beneath Cost-of-Illness and Markov Models
- Design, Model and Estimand: What Each Study Design Can Actually Estimate
- Risk Ratio, Odds Ratio, Risk Difference and NNT: One 2×2 Table, Four Answers
- The Hazard Ratio Is Not a Risk Ratio: Proportional Hazards, Restricted Mean Survival Time and Model Inputs (this article)
- Chance, Bias and Confounding: Why an Association Is Not Yet a Treatment Effect
- Beyond the Evidence Pyramid: GRADE Certainty and Choosing Effectiveness Inputs for Economic Models
- From Sensitivity to Cost per Case Detected: Predictive Values, Prevalence and the Economics of Screening
- Whose Cost, in Which Year? Perspective, Opportunity Cost, Inflation and Discounting
- QALY, DALY and the Utilities Behind Them: What Is Actually Being Measured
- ICER, Dominance and the Cost-Effectiveness Plane: Reading the Thai Threshold of 160,000 Baht per QALY
- Decision Trees, Markov Cohorts and Probabilistic Sensitivity Analysis: How a Model Turns Evidence into a Decision
- Cost-Effective Is Not Affordable, and Efficient Is Not Fair: Budget Impact and Equity
- Parameter Sourcing, Reference Cost Lists and Utility Catalogues When Local Data Are Sparse
- Early Health Technology Assessment, Headroom Pricing and Benefit-Package Decisions
- Communicating Health Economic Evidence: From Model Outputs to Policy Briefs
Key takeaways
- Counting gives a rate: 4,000 deaths over 39,152 person-years is 102.2 per 1,000 person-years on A, 71.5 on C, an incidence rate ratio of 0.70.
- A hazard ratio of 0.70 compares speeds among those still alive at each moment; with 60 of 100 alive on A at five years, it means 30.1 deaths per 100 on C, not 28.0.
- The rate ratio equals the hazard ratio only while both speeds stay constant: if the disease speeds up, the five-year rate ratio is 0.72 while the hazard ratio stays 0.70.
- The risk ratio drifts from the hazard ratio toward 1 as deaths pile up: 0.71 at one year, 0.75 at five and 0.87 at 20.
- Feed the model rates and curves, not 0.70 times a probability: C adds 105 days per patient within five years, and the yearly chances of dying are 9.7% on A and 6.9% on C.
Related in the wiki: Incidence, Prevalence and the Right Denominator: The Epidemiology Beneath Cost-of-Illness and Markov Models · Risk Ratio, Odds Ratio, Risk Difference and NNT: One 2×2 Table, Four Answers · Decision Trees, Markov Cohorts and Probabilistic Sensitivity Analysis: How a Model Turns Evidence into a Decision · Cause-Specific Cox or Fine-Gray: Two Hazards, Two Questions · Restricted Mean Survival Time: How Much Event-Free Time Did Treatment Buy?