1

mlr3 框架中的 surv.gbm 输出线性预测变量,但我真正感兴趣的是每个案例的预测生存时间,我想将其与实际生存时间进行比较。有没有办法获得实际的生存时间?

在 mlr3 书中,有一个线性预测变量和分布之间的转换示例。

pod = po("distrcompose", param_vals = list(form = "ph", overwrite = FALSE))
prediction = pod$predict(list(base = prediction_distr, pred = prediction_lp))$output

有没有办法改变这个管道,以便将 "lp" 转换为 "response" ?

任何帮助都将不胜感激。

4

1 回答 1

2

是的,这绝对是可能的,它只需要另一个转换。您的第一步是正确地从线性预测器组成分布;因为您surv.gbm只使用 Cox PH 作为基础模型,所以默认distrcompose适用于此。

现在您需要使用crankcompose从分布中创建生存时间预测,您可以使用分布的均值、中值或众数,人们通常选择均值或中值,但这是您的选择!只要确保包括response = TRUE, overwrite = FALSE. 下面的示例代码包括使用 RMSE 创建预测和评分(非常好!)。我认为这本书可能需要更新...

谢谢,拉斐尔

library(mlr3extralearners)
library(mlr3proba)
library(mlr3pipelines)
library(mlr3)

learn =  ppl("crankcompositor", ppl("distrcompositor", lrn("surv.gbm")),
             response = TRUE, overwrite = FALSE, method = "mean",
             graph_learner = TRUE)
set.seed(1)
task = tgen("simsurv")$generate(50)
learn$train(task)
p = learn$predict(task)
p$score(msr("surv.rmse"))
于 2020-10-01T14:11:24.137 回答