Regressão de Cox e hazard ratio

Author

RLP

Como citar o conteúdo deste site

Pacheco RL, Martimbianco ALC, Riera, R. Interpretação de resultados de estudos clínicos e sínteses de evidências. 2022. Disponível em: www.nepsbeats.com.

Última atualização: 08/abril/2024.


No exemplo a seguir, examinaremos um ensaio clínico randomizado que possui o seguinte PICO:

P: pacientes com carcinoma colorretal metastático

I: imunoterapia + quimioterapia convencional

C: placebo + quimioterapia convencional

O: Sobrevida global

A hipótese principal do estudo é a de que a imunoterapia aumenta a sobrevida de pacientes com carcinoma colorretal metastático. O estudo recrutou um total de 48 pacientes (20 no grupo placebo e 28 no grupo intervenção).

Base 1. Base de dados do ensaio clínico randomizado que avaliou imunoterapia em pacientes com carcinoma colorretal metastático.

Code
library(haven)
survival_data <- read_dta("C:/Users/casa/OneDrive/cursos AE/curso_dgits _revisao/teste km/survival_data.dta")

knitr::kable(survival_data[1:10, ], ) 
studytime died group age
15 0 1 50
6 1 1 67
8 1 0 52
8 1 0 49
17 1 0 49
5 1 0 63
34 0 1 62
22 1 0 57
28 0 1 48
28 1 1 57

As colunas significam:

studytime : tempo (em meses) até a censura ou evento

died: estado (vivo ou morto) do paciente no momento da censura

group: identificação de qual intervenção o paciente recebeu

age: idade do paciente no momento da randomização (linha de base)

A curva de sobrevida está apresentada na figura 1.

Code
library(survminer)
library(survival)
s1 <- survfit(Surv(studytime, died) ~ group, data = survival_data)
ggsurvplot(s1, 
           conf.int = TRUE, 
           risk.table = TRUE,
           risk.table.col = "group", 
           surv.median.line = "hv", 
           ggtheme = theme_minimal())

Figura 1. Curva de Kaplan-Meier

Pela inspeção visual da figura 1, houve um grande distanciamento entre as curvas, o que parece indicar um benefício importante da intervenção no aumento da sobrevida. No entanto, precisamos utilizar um modelo de regressão para mensurar a magnitude do efeito. O modelo mais comumente utilizado é o modelo de Cox.

Code
library(survival)
library(tidyverse)
library(gtsummary)
coxph(Surv(studytime, died) ~ group, data = survival_data)
Call:
coxph(formula = Surv(studytime, died) ~ group, data = survival_data)

         coef exp(coef) se(coef)      z       p
group -2.0850    0.1243   0.4443 -4.692 2.7e-06

Likelihood ratio test=25.05  on 1 df, p=5.6e-07
n= 48, number of events= 31 
Code
coxph(Surv(studytime, died) ~ group, data = survival_data) |> 
  tbl_regression(exp = TRUE)
Characteristic HR1 95% CI1 p-value
Drug type 0.12 0.05, 0.30 <0.001
1 HR = Hazard Ratio, CI = Confidence Interval

O resultado é um hazard ratio de 0.12. O intervalo de confiança de 95% é de 0.05 a 0.30. Também temos um valor de p (<0.001), indicando que podemos rejeitar com confiança a hipótese nula de que os hazards dos grupos intervenção e placebo são os mesmos.

Esse ensaio clínico randomizado poderia sumarizar o resultado da seguinte forma:

Mas o que é o hazard ratio? O hazard ratio pode ser encarado como um “risco médio” ao longo do período. Ou seja, neste caso, podemos interpretar que em média o risco de um participantes morrer é 88% menor no grupo intervenção do que no grupo placebo.

O intervalo de confiança mostra que o efeito da intervenção na população é compatível com uma redução de 70% a 95% da mortalidade ao longo do tempo. Ou seja, mesmo no cenário mais conservador, o efeito esperado da intervenção é muito importante, o que confirma a impressão inicial de separação das curvas pela inspeção visual da curva de sobrevida (figura 1).

De fato, o modelo de regressão de Cox possui uma premissa muito importante: a de que a diferença relativa de riscos entre os grupos é constante ao longo do tempo. Essa premissa é chamada de “proporcionalidade dos hazards”.

Existem várias maneiras que um estatístico pode analisar a proporcionalidade de hazards. Uma dela é pelo gráfico “log-log plot of survival” (figura 2).

Code
plot(s1, fun = "cloglog", xlab = "Time (in days) using log",
     ylab = "log-log survival")

Figura 2. Log-log plot of survival

A teoria por trás desse gráfico é um pouco complexa, mas, em síntese, quando as curvas se cruzam em algum momento, a premissa de proporcionalidade entre os hazards não se sustenta. Neste caso, as curvas estão suficientemente paralelas para não duvidarmos dessa premissa. No entanto, existem outras formas de se avaliar a premissa da proporcionalidade, sendo a mais importante o contexto clínico avaliado pelo ensaio clínico randomizado.

Regressão de Cox ajustada

Como em qualquer regressão, podemos ajustar o modelo de regressão para variáveis de interesse. A análise abaixo apresenta a análise anterior ajustada pela idade dos pacientes na linha de base.

Code
library(survival)
library(tidyverse)
library(gtsummary)

coxph(Surv(studytime, died) ~ group + age, data = survival_data) |> 
  tbl_regression(exp = TRUE)
Characteristic HR1 95% CI1 p-value
Drug type 0.10 0.04, 0.24 <0.001
Patient's age at start of exp. 1.12 1.04, 1.21 0.002
1 HR = Hazard Ratio, CI = Confidence Interval

Esse ensaio clínico randomizado poderia sumarizar o resultado desta forma:

O hazard ratio ajustado pela idade indica um benefício ainda mais robusto com a intervenção.

Também é possível relatar uma curva de sobrevida ajustada (figura 3). Nesse caso, a curva ajustada, assim como hazard ratio, é muito similar à não ajustada.

Code
library(survminer)
library(survival)
library(pammtools)
library(riskRegression)
library(adjustedCurves)
library(tidyverse)

survival_data <- survival_data |> mutate(groupfactor = as.factor(group))

s1 <- coxph(Surv(studytime, died) ~ groupfactor + age, data = survival_data, x = TRUE)


iptw <- adjustedsurv(data = survival_data, 
                     variable = "groupfactor", 
                     ev_time = "studytime",
                     event = "died", 
                     method = "direct",
                     outcome_model = s1, 
                     conf_int = TRUE)

plot(iptw, conf_int = TRUE, median_surv_lines = TRUE, censoring_ind="points", censoring_ind_shape=3,
     censoring_ind_size=2, xlab = "Time (in months)", ylab = "Survival probability", main = "Adjusted Kaplan-Meier curve")

Figura 3. Curva de Kaplan-Meier (análise ajustada pela idade)

Back to top