簡體   English   中英

使用 CoxPH 預測和繪制生存曲線

[英]Predicting and Plotting Survival Curve with the CoxPH

我正在嘗試預測和繪制 R 中新觀察的(估計的)生存曲線。使用“生存”庫和“肺”數據集,我首先將 cox 比例風險模型擬合到數據中。 然后,我嘗試預測並繪制假設的新觀察的生存曲線(我在“list”命令中輸入了這個假設的新觀察的詳細信息)。 但是,這是行不通的。

我在下面附上了我的代碼:

#load library
library(survival)
data(lung)

#create survival object
s <- with(lung,Surv(time,status))

#create model
modelA  <- coxph(s ~ as.factor(sex)+age+ph.ecog+wt.loss+ph.karno,data=lung, model=TRUE)
summary(modelA)

#plot
plot(survfit(modelA), ylab="Probability of Survival",
     xlab="Time", col=c("red", "black", "black"))

#predict for a hypothetical NEW observation (here is where the error is)
lines(predict(modelA, newdata=list(sex=1, 
                                  age = 56, 
                                  ph.ecog = 1, 
                                  ph.karno = 50,
                                  wt.loss = 11),
               type="quantile",
               p=seq(.01,.99,by=.01)),
       seq(.99,.01,by=-.01),
       col="blue")
## Error in match.arg(type) : 
##  'arg' should be one of “lp”, “risk”, “expected”, “terms”, “survival”

有誰知道我做錯了什么? 謝謝

這就是survfit函數的用途。 在您的示例中,您繪制了模型的survfit ,但您可以將newdata參數輸入此函數,它將為這些數據生成估計的生存。

如果我們重現您的示例:

library(survival)

s <- with(lung, Surv(time, status))

modelA  <- coxph(s ~ as.factor(sex) + age + ph.ecog + wt.loss + ph.karno,
                 data = lung, model = TRUE)

plot(survfit(modelA), ylab = "Probability of Survival",
     xlab = "Time", col = c("red", "black", "black"))

然后我們可以根據您指定的協變量創建一條生存曲線,如下所示:

est <- survfit(modelA, newdata = data.frame(sex      = 1,
                                            age      = 56,
                                            ph.ecog  = 1, 
                                            ph.karno = 50,
                                            wt.loss  = 11))

現在est是一個 S3 對象,其成員包括timesurvival ,因此我們可以繪制一條藍線來跟蹤具有給定協變量的個體的估計生存率,如下所示:

lines(est$time, est$surv, col = 'blue', type = 's')

在此處輸入圖像描述

或者以 95% 的置信區間自行繪制:

plot(est, ylab = "Probability of Survival",
     xlab = "Time", col = c("red", "black", "black"))

在此處輸入圖像描述

reprex 包於 2022-05-26 創建 (v2.0.1)

請參閱predict()函數的描述(您可以通過運行?predict.coxph在 R 幫助中打開它,或者在這里例如):

type - 預測值的類型。 選擇是線性預測變量 ( "lp" )、風險評分 exp(lp) ( "risk" )、給定協變量和隨訪時間 ( "expected" ) 的預期事件數以及線性預測變量的項( "terms" )。 受試者的生存概率等於 exp(-expected)。

您可以看到您的type="quantile"與預期的輸入不匹配。 如果您在沒有type參數的情況下調用predict() ,則在您的情況下,它將默認使用lp (線性預測器)。
當您為對象modelA調用predict()函數時,它確定它屬於coxph類,因此應用 predict.coxph predict.coxph()函數。 type="quantile"p=seq(.01,.99,by=.01)這樣的參數對於predict.coxph()是不可接受的( p被忽略, type引發錯誤)。 它們用於另一個函數predict.survreg() - 要調用它,您的modelA對象必須屬於survreg類,即它應該使用survreg()調用而不是coxph() ) 調用來創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM