Tính tỷ lệ mới mắc bằng mô hình poisson: liên quan đến tỷ lệ nguy hiểm từ mô hình Cox PH


9

Tôi muốn tính toán tỷ lệ mới mắc để trình bày theo tỷ lệ rủi ro để trình bày các biện pháp rủi ro tương đối và tuyệt đối. Tôi đã thấy trong các nghiên cứu khác rằng tỷ lệ mới mắc như vậy có thể được tính bằng cách sử dụng các mô hình poisson với thời gian theo dõi trong mô hình như là một sự bù đắp. Vì vậy, tôi đã thử điều đó trong R như sau:

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

Tôi hy vọng rằng tỷ lệ tỷ lệ mới mắc tương tự như tỷ lệ nguy hiểm từ mô hình Cox PH với cùng một điều khoản, nhưng bằng cách nào đó chúng khác nhau. Tôi có đang sử dụng phương pháp đúng để tính tỷ lệ mới mắc không?

Mọi sự trợ giúp sẽ rất được trân trọng!

Câu trả lời:


11

Theo như tôi có thể thấy không có gì sai với mã hoặc tính toán của bạn. Tuy nhiên, bạn có thể bỏ qua một vài dòng mã bằng cách lấy tỷ lệ tỷ lệ mới mắc theo . Hai mô hình đưa ra các giả định khác nhau và điều này có khả năng dẫn đến các kết quả khác nhau.exp(coef(mod))

Hồi quy Poisson giả định các mối nguy hiểm liên tục. Mô hình Cox chỉ giả định rằng các mối nguy hiểm tỷ lệ thuận. Nếu giả định về các mối nguy hiểm không đổi được đáp ứng câu hỏi này

Cox Regression có phân phối Poisson cơ bản không?

giải thích mối liên hệ giữa hồi quy Cox và Poisson.

Chúng ta có thể sử dụng mô phỏng để nghiên cứu hai tình huống: mối nguy không đổi và mối nguy không liên tục (nhưng tỷ lệ). Trước tiên, hãy mô phỏng dữ liệu từ dân số với mối nguy hiểm thường trực. Tỷ lệ nguy hiểm có dạng

λ(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)

Đối với mô hình Cox, trung bình của các ước tính tham số là

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

và cho mô hình Poisson

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

Đối với cả hai mô hình, chúng tôi thấy rằng giá trị này gần với các giá trị thực, ví dụ, nhớ rằng sự khác biệt giữa nam và nữ là -0,04, và ước tính là -0,038 cho cả hai mô hình. Bây giờ chúng ta có thể làm tương tự với chức năng nguy hiểm không cố định

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

Bây giờ chúng tôi mô phỏng như trước đây.

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)

Đối với mô hình Cox bây giờ chúng tôi nhận được

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

và cho mô hình Poisson

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

Trong mô phỏng này, trung bình của mô hình Poisson rõ ràng là xa hơn các giá trị thực so với mô hình Cox. Điều này không đáng ngạc nhiên vì chúng tôi đã vi phạm giả định về các mối nguy hiểm liên tục.

S

S(t)=exp(αt)

αSS

nhập mô tả hình ảnh ở đây

Hàm này trông lõm. Điều này không chứng minh bất cứ điều gì, nhưng có thể là một gợi ý rằng giả định về các mối nguy không đổi không được đáp ứng cho tập dữ liệu này, điều này có thể giải thích sự khác biệt giữa hai mô hình.

colonid

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.