使用sbrier(R)估计Cox生存模型的预测准确性

时间:2017-03-03 15:46:33

标签: r prediction survival-analysis cox-regression

Graf等人(1999)在一篇论文中提出了综合Brier评分(IBS),作为生存模型预测准确性的一个很好的衡量标准(参见例如overview paper by Wiering et al.,第23页)。

它已作为函数ipred在包sbrier中实现。然而,虽然brier分数定义显然适用于Cox比例风险模型,但我无法让sbrier返回coxph模型的Brier分数。

以下是设置的问题。

library(survival)
library(ipred)
data("DLBCL", package = "ipred")

#Fit coxph model    
smod   <- Surv(DLBCL$time, DLBCL$cens)
coxmod <- coxph(smod ~ IPI, data = DLBCL) # I just chose a significant covariate from DLBCL

现在我想估计IBS。关注?sbrier

obj  : an object of class Surv.
pred : predicted values. Either a probability or a list of survfit objects.

所以我们有一个幸存物体列表

sbrier(smod, list(survfit(coxmod) ))

或生存概率

sbrier(smod, survfit(coxmod,newdata=DLBCL)$surv )

第一次回归

Error in sbrier(smod, list(survfit(coxmod))) : 
  pred must be of length(time)

第二个

Error in sbrier(smod, survfit(coxmod, newdata = DLBCL)$surv) : 
  wrong dimensions of pred

示例未列出coxph模型。也许它不受支持。否则,我哪里出错?

2 个答案:

答案 0 :(得分:2)

您可以使用pec包。

示例:

library(pec)
set.seed(18713)
library(prodlim)
library(survival)
dat=SimSurv(100)
pmodel=coxph(Surv(time,status)~X1+X2,data=dat)
perror=pec(list(Cox=pmodel),Hist(time,status)~1,data=dat)
## cumulative prediction error
crps(perror) # between min time and 1
## same thing:
ibs(perror) 

答案 1 :(得分:1)

library(survival)
library(ipred)
data("DLBCL", package = "ipred")



smod   <- Surv(DLBCL$time, DLBCL$cens)
coxmod <- coxph(smod ~ IPI, data = DLBCL)
coxmod
Call:
coxph(formula = smod ~ IPI, data = DLBCL)
     coef exp(coef) se(coef)    z      p
IPI 0.505     1.657    0.181 2.79 0.0053
Likelihood ratio test=8.15  on 1 df, p=0.0043
n= 38, number of events= 20 
   (2 observations deleted due to missingness)

仅使用了38次观察。其他人需要在预测之前删除。

DLBCL <- DLBCL[!(is.na(DLBCL$IPI)|is.na(DLBCL$time)|is.na(DLBCL$cens)),]

pred  <- predict(coxmod)
 sbrier(smod, pred,btime=2)

结果

Brier score 
  1.457241 
attr(,"time")
[1] 2

必须指定btime,这意味着无法计算ibs。我还没弄明白。