2015-06-23 47 views
0

我想使用Cox模型來預測故障時間後的概率(被命名爲停止)3.從考克斯PH模型預測概率

bladder1 <- bladder[bladder$enum < 5, ] 
coxmodel = coxph(Surv(stop, event) ~ (rx + size + number) + 
     cluster(id), bladder1) 
range(predict(coxmodel, bladder1, type = "lp")) 
range(predict(coxmodel, bladder1, type = "risk")) 
range(predict(coxmodel, bladder1, type = "terms")) 
range(predict(coxmodel, bladder1, type = "expected")) 

然而,預測功能的輸出都沒有0-1的範圍。是否有任何功能或者如何使用lp預測和基線危險函數來計算概率?

回答

7

請閱讀幫助頁面predict.coxph。這些都不是概率。一組特定協變量的線性預測因子是與所有預測值的平均值相關的假設(並且可能不存在)情況下的對數風險比。由於「預期」是一個預測的事件數,因此它與預測的概率最接近,但它需要指定時間,然後除以觀察開始時的風險數。

在爲predict該幫助頁面上提供的例子中,你可以看到,預測事件的總和接近的實際數量:

> sum(predict(fit,type="expected"), na.rm=TRUE) 
[1] 163 

> sum(lung$status==2) 
[1] 165 

我懷疑你可能要代替工作與survfit功能,因爲事件的概率是1生存概率。

?survfit.coxph 

了類似的問題的代碼出現在這裏,但與這個問題時,既不接受,也不upvoted,所以一個是左想知道是否有人關心:Adding column of predicted Hazard Ratio to dataframe after Cox Regression in R

既然你建議使用bladder1數據集,那麼這將是對時間的說明書中,代碼= 5

summary(survfit(coxmodel), time=5) 
#------------------ 
Call: survfit(formula = coxmodel) 

time n.risk n.event survival std.err lower 95% CI upper 95% CI 
    5 302  26 0.928 0.0141  0.901  0.956 

,將返回作爲一個列表與存活預測爲名爲$surv列表元素:

> str(summary(survfit(coxmodel), time=5)) 
List of 14 
$ n  : int 340 
$ time : num 5 
$ n.risk : num 302 
$ n.event : num 26 
$ conf.int: num 0.95 
$ type : chr "right" 
$ table : Named num [1:7] 340 340 340 112 NA 51 NA 
    ..- attr(*, "names")= chr [1:7] "records" "n.max" "n.start" "events" ... 
$ n.censor: num 19 
$ surv : num 0.928 
$ std.err : num 0.0141 
$ lower : num 0.901 
$ upper : num 0.956 
$ cumhaz : num 0.0744 
$ call : language survfit(formula = coxmodel) 
- attr(*, "class")= chr "summary.survfit" 
> summary(survfit(coxmodel), time=5)$surv 
[1] 0.9282944 
+0

謝謝你的回答!是否有指定預期類型的​​後續時間? – Yoki

+0

感謝您的編輯!這給了我最終解決方案的正確方向。 – Yoki