2

"ranger" Rパッケージを使用して解析するために、BrierスコアとBrierスコアを計算します。レンジャーRパッケージを使用したBrier ScoreとIntegrated Brier Scoreの計算

例として

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機能を用いて計算することができますが、rangerモデリング手法(利用可能なモデルのリストについては?pec:::predictSurvProb)からの生存確率の予測を抽出するpredictSurvProbコマンドを定義する必要があります。
possibile溶液は次のよう

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 
} 

この機能を使用することができる。

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を表示するれるtimes時点で示し、print.pecコマンドを用いて評価することができます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

非常にありがとうございます@マルコサンドリ!その作業は完璧です。 – Khan

関連する問題