2017-07-14 1318 views
2

我想使用“ranger”R软件包计算我的分析的Brier分数和综合Brier分数。使用ranger R软件包计算Brier分数和综合Brier分数

举个例子,我用的是老将的数据从“生存”包如下

install.packages("ranger") 
library(ranger) 
install.packages("survival") 
library(survival) 
#load veteran data 
data(veteran) 
data <- veteran 
# training and test data 
n <- nrow(data) 
testind <- sample(1:n,n*0.7) 
trainind <- (1:n)[-testind] 
#train ranger 
rg <- ranger(Surv(time, status) ~ ., data = data[trainind,]) 
# use rg to predict test data 
pred <- predict(rg,data=data[testind,],num.trees=rg$num.trees) 
#cummulative hazard function for each sample 
pred$chf 
#survival probability for each sample 
pred$survival 

如何计算布赖尔得分和综合得分布赖尔?

回答

2

综合布来得分(IBS)可以使用pec包的pec函数来计算,但您需要定义一个predictSurvProb命令提取从ranger建模方法存活概率预测(?pec:::predictSurvProb可用模型的列表)。
甲不可能性的解决方案是:

library(ranger) 
library(survival) 
data(veteran) 
dts <- veteran 
n <- nrow(dts) 
set.seed(1) 
testind <- sample(1:n,n*0.7) 
trainind <- (1:n)[-testind] 
rg <- ranger(Surv(time, status) ~ ., data = dts[trainind,]) 

# A formula to be inputted into the pec command 
frm <- as.formula(paste("Surv(time, status)~", 
     paste(rg$forest$independent.variable.names, collapse="+"))) 

library(pec) 
# Using pec for IBS estimation 
PredError <- pec(object=rg, 
    formula = frm, cens.model="marginal", 
    data=dts[testind,], verbose=F, maxtime=200) 

的IBS可以使用print.pec命令,指示times进行评估时的时间点,以显示:

predictSurvProb.ranger <- function (object, newdata, times, ...) { 
    ptemp <- ranger:::predict.ranger(object, data = newdata, importance = "none")$survival 
    pos <- prodlim::sindex(jump.times = object$unique.death.times, 
     eval.times = times) 
    p <- cbind(1, ptemp)[, pos + 1, drop = FALSE] 
    if (NROW(p) != NROW(newdata) || NCOL(p) != length(times)) 
     stop(paste("\nPrediction matrix has wrong dimensions:\nRequested newdata x times: ", 
      NROW(newdata), " x ", length(times), "\nProvided prediction matrix: ", 
      NROW(p), " x ", NCOL(p), "\n\n", sep = "")) 
    p 
} 

如下此功能可用于IBS:

print(PredError, times=seq(10,200,50)) 

# ... 
# Integrated Brier score (crps): 
# 
#   IBS[0;time=10) IBS[0;time=60) IBS[0;time=110) IBS[0;time=160) 
# Reference   0.043   0.183   0.212   0.209 
# ranger    0.041   0.144   0.166   0.176 
+0

非常感谢@Marco Sandri!现在它的工作很完美。 – Khan