Calcular taxas de incidência usando o modelo de Poisson: relação à taxa de risco do modelo Cox PH

9

Quero calcular as taxas de incidência para apresentar as taxas de risco, a fim de apresentar medidas de risco relativas e absolutas. Vi em outros estudos que essas taxas de incidência podem ser calculadas usando modelos de Poisson com tempo de acompanhamento no modelo como um deslocamento. Então, eu tentei isso em R da seguinte maneira:

library(survival)

# Get example data
data(colon)
colon$status <- ifelse(colon$etype==1,0,1) # set to 0/1 (needed for poisson later on)

# Fit cox model for rx (age + sex adjusted)
coxph(Surv(time,status)~rx+sex+age, data=colon)
# HR (rxLev): 0.92  
# HR (rxLev+5FU): 0.74

# Get incidence rates using poisson models with same terms and log(time) as offset
mod <- glm(status~offset(log(time))+rx+sex+age, data=colon, family=poisson)

# Get rates using predict-function
Obs <- predict(mod, data.frame(time=1, rx="Obs", age=mean(colon$age),
                                   sex=mean(colon$sex)),  type="response")
Lev <- predict(mod, data.frame(time=1, rx="Lev", age=mean(colon$age), 
                                   sex=mean(colon$sex)),  type="response")
Lev5FU <- predict(mod, data.frame(time=1, rx="Lev+5FU", age=mean(colon$age), 
                                      sex=mean(colon$sex)),  type="response")

# Calculate incidence rate ratio's:
Lev/Obs # 0.98
Lev5FU/Obs # 0.84

Eu esperaria que as taxas de incidência sejam semelhantes às taxas de risco do modelo Cox PH com os mesmos termos, mas de alguma forma elas diferem. Estou usando a abordagem correta para calcular taxas de incidência?

Qualquer ajuda seria muito apreciada!

Roubar
fonte

Respostas:

11

exp(coef(mod))

A regressão de Poisson assume riscos constantes. O modelo de Cox supõe apenas que os riscos sejam proporcionais. Se a suposição de riscos constantes for cumprida, esta questão

Regressão de Cox tem uma distribuição subjacente de Poisson?

explica a conexão entre a regressão de Cox e Poisson.

Podemos usar a simulação para estudar duas situações: perigos constantes e perigos não constantes (mas proporcionais). Primeiro, vamos simular dados de uma população com um risco constante. A taxa de risco tem a forma

λ(t)=λ0exp(βx)

βxλ0Fλ

F(t)=1exp(0tλ(s) ds)

FF1(0,1)F1

library(survival)
data(colon)
data <- with(colon, data.frame(sex = sex, rx = rx, age = age))
n <- dim(data)[1]
# defining linP, the linear predictor, beta*x in the above notation
linP <- with(colon, log(0.05) + c(0.05, 0.01)[as.factor(sex)] + c(0.01,0.05,0.1)[rx] + 0.1*age)

h <- exp(linP)

simFuncC <- function() {
  cens <- runif(n) # simulating censoring times
  toe <- -log(runif(n))/h # simulating times of events
  event <- ifelse(toe <= cens, 1, 0) # deciding if time of event or censoring is the smallest
  data$time <- pmin(toe, cens)
  data$event <- event
  mCox <- coxph(Surv(time, event) ~ sex + rx + age, data = data)
  mPois <- glm(event ~ sex + rx + age, data = data, offset = log(time))
  c(coef(mCox), coef(mPois))
}

sim <- t(replicate(1000, simFuncC()))
colMeans(sim)

Para o modelo de Cox, as médias das estimativas de parâmetros são

        sex       rxLev   rxLev+5FU         age 
-0.03826301  0.04167353  0.09069553  0.10025534 

e para o modelo de Poisson

(Intercept)         sex       rxLev   rxLev+5FU         age 
-1.23651275 -0.03822161  0.03678366  0.08606452  0.09812454 

Para ambos os modelos, vemos que isso se aproxima dos valores reais, lembrando que a diferença entre homens e mulheres foi de -0,04, por exemplo, e estima-se que seja -0,038 para ambos os modelos. Agora podemos fazer o mesmo com a função de risco não constante

λ(t)=λ0texp(βx)

Agora simulamos como antes.

simFuncN <- function() {
  cens <- runif(n)
  toe <- sqrt(-log(runif(n))/h)
  event <- ifelse(toe <= cens, 1, 0)
  data$time <- pmin(toe, cens)
  data$event <- event
  mCox <- coxph(Surv(time, event) ~ sex + rx + age, data = data)
  mPois <- glm(event ~ sex + rx + age, data = data, offset = log(time))
  c(coef(mCox), coef(mPois))
}

sim <- t(replicate(1000, simFuncN()))
colMeans(sim)

Para o modelo Cox, agora obtemos

        sex       rxLev   rxLev+5FU         age 
-0.04220381  0.04497241  0.09163522  0.10029121  

e para o modelo de Poisson

(Intercept)         sex       rxLev   rxLev+5FU         age 
-0.12001361 -0.01937333  0.02028097  0.04318946  0.04908300

Nesta simulação, as médias do modelo de Poisson estão claramente mais distantes dos valores reais do que as do modelo de Cox. Isso não é surpreendente, pois violamos a suposição de riscos constantes.

S

S(t)=exp(αt)

αSS

insira a descrição da imagem aqui

Esta função parece côncava. Isso não prova nada, mas pode ser uma dica de que a suposição de riscos constantes não é cumprida para esse conjunto de dados, o que, por sua vez, poderia explicar as discrepâncias entre os dois modelos.

colonid

swmo
fonte