| mlr_pipeops_trafotask_survregr | R Documentation |
Transform TaskSurv to TaskRegr.
Input and output channels are inherited from PipeOpTaskTransformer.
The output is the input TaskSurv transformed to a TaskRegr.
The $state is a named list with the $state elements
instatus: Censoring status from input training task.
outstatus : Censoring status from input prediction task.
The parameters are
method::character(1))
Method to use for dealing with censoring. Options are "ipcw" (Vock et al., 2016): censoring
is column is removed and a weights column is added, weights are inverse estimated survival
probability of the censoring distribution evaluated at survival time;
"mrl" (Klein and Moeschberger, 2003): survival time of censored
observations is transformed to the observed time plus the mean residual life-time at the moment
of censoring; "bj" (Buckley and James, 1979): Buckley-James imputation assuming an AFT
model form, calls bujar::bujar; "delete": censored observations are deleted from the
data-set - should be used with caution if censoring is informative; "omit": the censoring
status column is deleted - again should be used with caution; "reorder": selects features and
targets and sets the target in the new task object. Note that "mrl" and "ipcw" will perform
worse with Type I censoring.
estimator::(character(1))
Method for calculating censoring weights or mean residual lifetime in "mrl",
current options are: "kaplan": unconditional Kaplan-Meier estimator;
"akritas": conditional non-parameteric nearest-neighbours estimator;
"cox".
alpha::(numeric(1))
When ipcw is used, optional hyper-parameter that adds an extra penalty to the weighting for
censored observations. If set to 0 then censored observations are given zero weight and
deleted, weighting only the non-censored observations. A weight for an observation is then
(δ + α(1-δ))/G(t) where δ is the censoring indicator.
eps::numeric(1)
Small value to replace 0 survival probabilities with in IPCW to prevent infinite weights.
lambda::(numeric(1))
Nearest neighbours parameter for the "akritas" estimator in the mlr3extralearners package, default 0.5.
features, target :: character())
For "reorder" method, specify which columns become features and targets.
learner cneter, mimpu, iter.bj, max.cycle, mstop, nu
Passed to bujar::bujar.
mlr3pipelines::PipeOp -> mlr3proba::PipeOpTransformer -> mlr3proba::PipeOpTaskTransformer -> PipeOpTaskSurvRegr
new()Creates a new instance of this R6 class.
PipeOpTaskSurvRegr$new(id = "trafotask_survregr", param_vals = list())
id(character(1))
Identifier of the resulting object.
param_vals(list())
List of hyperparameter settings, overwriting the hyperparameter settings that would
otherwise be set during construction.
clone()The objects of this class are cloneable with this method.
PipeOpTaskSurvRegr$clone(deep = FALSE)
deepWhether to make a deep clone.
Buckley, Jonathan, James, Ian (1979). “Linear Regression with Censored Data.” Biometrika, 66(3), 429–436. doi: 10.2307/2335161, https://www.jstor.org/stable/2335161.
Klein, P J, Moeschberger, L M (2003). Survival analysis: techniques for censored and truncated data, 2 edition. Springer Science & Business Media. ISBN 0387216456.
Vock, M D, Wolfson, Julian, Bandyopadhyay, Sunayan, Adomavicius, Gediminas, Johnson, E P, Vazquez-Benitez, Gabriela, O'Connor, J P (2016). “Adapting machine learning techniques to censored time-to-event health record data: A general-purpose approach using inverse probability of censoring weighting.” Journal of Biomedical Informatics, 61, 119–131. doi: 10.1016/j.jbi.2016.03.009, https://www.sciencedirect.com/science/article/pii/S1532046416000496.
Other PipeOps:
PipeOpPredTransformer,
PipeOpTaskTransformer,
PipeOpTransformer,
mlr_pipeops_survavg,
mlr_pipeops_trafopred_regrsurv,
mlr_pipeops_trafopred_survregr,
mlr_pipeops_trafotask_regrsurv
Other Transformation PipeOps:
mlr_pipeops_trafopred_regrsurv,
mlr_pipeops_trafopred_survregr,
mlr_pipeops_trafotask_regrsurv
## Not run:
if (requireNamespace("mlr3pipelines", quietly = TRUE)) {
library(mlr3)
library(mlr3pipelines)
# these methods are generally only successful if censoring is not too high
# create survival task by undersampling
task = tsk("rats")$filter(
c(which(tsk("rats")$truth()[, 2] == 1),
sample(which(tsk("rats")$truth()[, 2] == 0), 42))
)
# deletion
po = po("trafotask_survregr", method = "delete")
po$train(list(task, NULL))[[1]] # 42 deleted
# omission
po = po("trafotask_survregr", method = "omit")
po$train(list(task, NULL))[[1]]
if (requireNamespace("mlr3extralearners", quietly = TRUE)) {
# ipcw with Akritas
po = po("trafotask_survregr", method = "ipcw", estimator = "akritas", lambda = 0.4, alpha = 0)
new_task = po$train(list(task, NULL))[[1]]
print(new_task)
new_task$weights
}
# mrl with Kaplan-Meier
po = po("trafotask_survregr", method = "mrl")
new_task = po$train(list(task, NULL))[[1]]
data.frame(new = new_task$truth(), old = task$truth())
# Buckley-James imputation
if (requireNamespace("bujar", quietly = TRUE)) {
po = po("trafotask_survregr", method = "bj")
new_task = po$train(list(task, NULL))[[1]]
data.frame(new = new_task$truth(), old = task$truth())
}
# reorder - in practice this will be only be used in a few graphs
po = po("trafotask_survregr", method = "reorder", features = c("sex", "rx", "time", "status"),
target = "litter")
new_task = po$train(list(task, NULL))[[1]]
print(new_task)
# reorder using another task for feature names
po = po("trafotask_survregr", method = "reorder", target = "litter")
new_task = po$train(list(task, task))[[1]]
print(new_task)
}
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.