如何计算 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 【问题描述】:我有一个生存数据集,其中给出了time
和status
变量以及(比如)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 分数?的主要内容,如果未能解决你的问题,请参考以下文章