如何计算 R 中给定一组概率的生存结果的 brier 分数?

Posted

技术标签:

【中文标题】如何计算 R 中给定一组概率的生存结果的 brier 分数?【英文标题】:How to calculate brier score for a given set of probabilities in R for survival outcome? 【发布时间】:2022-01-07 11:40:18 【问题描述】:

我有一个生存数据集,其中给出了timestatus 变量以及(比如)time = 12 的一些生存概率,这些概率是根据数据集中每个人的一些指数计算得出的。现在,我想计算数据集中每个索引的 brier 分数并选择最好的一个。这是我的示例代码:

set.seed(99)
library(dplyr)
library(survival)
library(prodlim) 
library(pec)   

# simulated survival data data
data <- SimSurv(100)

# add two incides
data$index1<-runif(100, 0.4, 0.9)
data$index2<-runif(100, 0.5, 1)

我在 R 中使用 pec 包尝试了以下操作。

# let's try for one index
models<-as.matrix(data$index1)

# try pec package, which provides brier score
PredError <- pec(object=models,
             formula = Surv(time, status)~1, cens.model="marginal",
             data=data, verbose=F, maxtime=200, times = 12)

但我收到以下错误消息:

Error in predictSurvProb.matrix(object = c(0.596092602680437, 0.675279439869337,  :

Prediction matrix has wrong dimensions:
Requested newdata x times: 100 x 102
Provided prediction matrix: 100 x 1

有人对如何解决这个问题有任何建议吗?

【问题讨论】:

【参考方案1】:

虽然使用矩阵作为对象时间参数在函数内部进行了调整,所以如果将时间参数更改为零并精确为 FALSE,代码将成功运行。

models <- as.matrix(data$index1)

PredError <- pec(object = models, formula = Surv(time, status) ~ 1, cens.model = "marginal", data = data, verbose = T, maxtime = 200, times = 0, exact = FALSE)

此外,如果您将对象更改为除矩阵之外的其他类型,则代码可以正常工作。

例如

models <- list("Cox.X1" = coxph(Surv(time, status) ~ index1, data = data, x = TRUE, y = TRUE))

PredError <- pec(object = models, formula = Surv(time, status) ~ 1, cens.model = "marginal", data = data, verbose = T, maxtime = 200, times = 12)

有关对象参数的详细信息,请参阅以下声明:

预测模型的命名列表,其中允许的条目是 (1) 存在 predictSurvProb 方法的 R 对象(请参阅详细信息),(2) 评估此类 R 对象的调用(请参阅示例), (3) 具有与数据一样多的行和与时间一样多的列的预测概率的矩阵。对于交叉验证,此列表中的所有对象都必须包含它们的调用。

【讨论】:

谢谢,但它没有提供应有的 brier 分数。但再次感谢。

以上是关于如何计算 R 中给定一组概率的生存结果的 brier 分数?的主要内容,如果未能解决你的问题,请参考以下文章

使用R中的RMS包预测生存?

R语言生存分析可视化分析

R语言如何在生存分析与Cox回归中计算IDI,NRI指标

生存分析R语言绘图——ggsuvplot介绍及实例

R生存分析 - KM曲线 ,值得拥有姓名和颜值

R语言生存分析之COX比例风险模型构建及亚组森林图绘制示例