This task specializes mlr3::Task and mlr3::TaskSupervised for possibly-censored survival problems. The target is comprised of survival times and an event indicator. Predefined tasks are stored in mlr3::mlr_tasks.
The task_type
is set to "surv"
.
mlr3::Task
-> mlr3::TaskSupervised
-> TaskSurv
censtype
character(1)
Returns the type of censoring, one of "right", "left", "counting", "interval", or "mstate".
new()
Creates a new instance of this R6 class.
TaskSurv$new( id, backend, time = "time", event = "event", time2, type = c("right", "left", "interval", "counting", "interval2", "mstate"), label = NA_character_ )
id
(character(1)
)
Identifier for the new instance.
backend
(DataBackend)
Either a DataBackend, or any object which is convertible to a DataBackend with as_data_backend()
.
E.g., a data.frame()
will be converted to a DataBackendDataTable.
time
(character(1)
)
Name of the column for event time if data is right censored, otherwise starting time if
interval censored.
event
(character(1)
)
Name of the column giving the event indicator.
If data is right censored then "0"/FALSE
means alive (no event), "1"/TRUE
means dead
(event). If type
is "interval"
then "0" means right censored, "1" means dead (event),
"2" means left censored, and "3" means interval censored. If type
is "interval2"
then
event
is ignored.
time2
(character(1)
)
Name of the column for ending time for interval censored data, otherwise ignored.
type
(character(1)
)
Name of the column giving the type of censoring. Default is 'right' censoring.
label
(character(1)
)
Label for the new instance.
truth()
True response for specified row_ids
. Format depends on the task type.
Defaults to all rows with role "use".
TaskSurv$truth(rows = NULL)
rows
integer()
Row indices.
numeric()
.
formula()
Creates a formula for survival models with survival::Surv on the LHS.
TaskSurv$formula(rhs = NULL)
rhs
If NULL
RHS is .
, otherwise gives RHS of formula.
numeric()
.
times()
Returns the (unsorted) outcome times.
TaskSurv$times(rows = NULL)
rows
integer()
Row indices.
numeric()
status()
Returns the event indicator (aka censoring/survival indicator).
If censtype
is "right"
or "left"
then 1
is event and 0
is censored.
If censtype
is "mstate"
then 0
is censored and all other values are different events.
If censtype
is "interval"
then 0
is right-censored, 1
is event, 2
is left-censored,
3
is interval-censored.
See survival::Surv.
TaskSurv$status(rows = NULL)
rows
integer()
Row indices.
integer()
unique_times()
Returns the sorted unique outcome times for 'right', 'left', and 'mcstate'.
TaskSurv$unique_times(rows = NULL)
rows
integer()
Row indices.
numeric()
unique_event_times()
Returns the sorted unique event (or failure) outcome times.
TaskSurv$unique_event_times(rows = NULL)
rows
integer()
Row indices.
numeric()
risk_set()
Returns the row_ids
of the observations 'at risk' (not dead or censored) at time
.
TaskSurv$risk_set(time = NULL)
time
(numeric(1)
) Time to return risk set for, if NULL
returns all row_ids
.
integer()
kaplan()
Calls survival::survfit()
to calculate the Kaplan-Meier estimator.
TaskSurv$kaplan(strata = NULL, rows = NULL, ...)
strata
(character()
)
Stratification variables to use.
rows
(integer()
)
Subset of row indices.
...
(any)
Additional arguments passed down to survival::survfit.formula()
.
clone()
The objects of this class are cloneable with this method.
TaskSurv$clone(deep = FALSE)
deep
Whether to make a deep clone.
Other Task:
TaskDens
# NOT RUN {
library(mlr3)
lung = survival::lung
lung$status = (lung$status == 2L)
task = TaskSurv$new("lung",
backend = lung, time = "time",
event = "status")
# meta data
task$target_names
task$feature_names
task$formula()
# survival data
task$truth()
task$times()
task$status()
task$unique_times()
task$unique_event_times()
task$risk_set(time = 700)
task$kaplan("sex")
# }
Run the code above in your browser using DataLab