mlr3:从 surv.gbm 获得响应(预测生存时间)
mlr3: obtaining response (predicted survival time) from 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"))
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"))