predict.coxph()
tính tỷ lệ nguy hiểm liên quan đến trung bình mẫu cho tất cả các biến dự đoán . Các yếu tố được chuyển đổi thành các yếu tố dự đoán giả như bình thường có thể tính trung bình. Hãy nhớ rằng mô hình Cox PH là một mô hình tuyến tính cho log- risk ln h ( t ) :plnh(t)
lnh(t)=lnh0(t)+β1X1+⋯+βpXp=lnh0(t)+Xβ
Trong đó là mối nguy cơ bản không xác định. Tương tự, nguy hiểm h ( t ) được mô phỏng như h ( t ) = h 0 ( t ) ⋅ e β 1 X 1 + ⋯ + β p X p = h 0 ( t ) ⋅ e X β . Tỷ lệ rủi ro giữa hai người tôi và tôi ' với giá trị dự đoánh0(t)h(t)h(t)=h0(t)⋅eβ1X1+⋯+βpXp=h0(t)⋅eXβii′Xivà là như vậy, không phụ thuộc vào rủi ro cơ bản và không phụ thuộc vào thời gian t :Xi′t
hi(t)hi′(t)=h0(t)⋅eXiβh0(t)⋅eXi′β=eXiβeXi′β
Đối với tỷ lệ rủi ro ước tính giữa người và i ' , chúng ta chỉ cần cắm trong dự toán hệ số b 1 , ... , b p cho β 1 , ... , β p , cho e X i b và e X i ' bii′b1,…,bpβ1,…,βpeXibeXi′b .
Lấy ví dụ trong R, tôi sử dụng dữ liệu từ phụ lục của John Fox trên mô hình Cox-PH cung cấp văn bản giới thiệu rất hay. Đầu tiên, chúng tôi lấy dữ liệu và xây dựng mô hình Cox-PH đơn giản để bắt giữ tù nhân được thả ra ( fin
: yếu tố - nhận viện trợ tài chính với mã hóa giả "no"
-> 0, "yes"
-> 1 , age
: tại thời điểm phát hành, prio
: số tiền án trước đó):
> URL <- "http://socserv.mcmaster.ca/jfox/Books/Companion/data/Rossi.txt"
> Rossi <- read.table(URL, header=TRUE) # our data
> Rossi[1:3, c("week", "arrest", "fin", "age", "prio")] # looks like this
week arrest fin age prio
1 20 1 no 27 3
2 17 1 no 18 8
3 25 1 no 19 13
> library(survival) # for coxph()
> fitCPH <- coxph(Surv(week, arrest) ~ fin + age + prio, data=Rossi) # Cox-PH model
> (coefCPH <- coef(fitCPH)) # estimated coefficients
finyes age prio
-0.34695446 -0.06710533 0.09689320
Bây giờ chúng tôi cắm trung bình mẫu cho các yếu tố dự đoán của chúng tôi vào công thức :eXb
meanFin <- mean(as.numeric(Rossi$fin) - 1) # average of financial aid dummy
meanAge <- mean(Rossi$age) # average age
meanPrio <- mean(Rossi$prio) # average number of prior convictions
rMean <- exp(coefCPH["finyes"]*meanFin # e^Xb
+ coefCPH["age"] *meanAge
+ coefCPH["prio"] *meanPrio)
Bây giờ chúng tôi cắm các giá trị dự đoán của 4 người đầu tiên vào công thức .eXb
r1234 <- exp(coefCPH["finyes"]*(as.numeric(Rossi[1:4, "fin"])-1)
+ coefCPH["age"] *Rossi[1:4, "age"]
+ coefCPH["prio"] *Rossi[1:4, "prio"])
Bây giờ hãy tính rủi ro tương đối cho 4 người đầu tiên so với trung bình mẫu và so sánh với đầu ra từ predict.coxph()
.
> r1234 / rMean
[1] 1.0139038 3.0108488 4.5703176 0.7722002
> relRisk <- predict(fitCPH, Rossi, type="risk") # relative risk
> relRisk[1:4]
1 2 3 4
1.0139038 3.0108488 4.5703176 0.7722002
Nếu bạn có một mô hình phân tầng, việc so sánh so predict.coxph()
với mức trung bình, điều này có thể được kiểm soát thông qua reference
tùy chọn được giải thích trong trang trợ giúp.