mlr3:从surv.gbm获得响应预测的生存时间

问题描述

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”?

将寻求任何帮助。

解决方法

是的,这完全有可能,只需要进行另一种转换即可。第一步是从线性预测变量组成分布是正确的;当您使用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"))