Survival Fully Parametric Learner
mlr_learners_surv.parametric.Rd
Parametric survival model.
Calls survivalmodels::parametric()
from package 'survivalmodels'.
Details
This learner allows you to choose a distribution and a model form to compose a predicted survival probability distribution \(S(t)\).
The predict method is implemented in survivalmodels::predict.parametric()
.
Our implementation is more efficient for composition to distributions than
survival::predict.survreg()
.
The available model forms with their respective survival functions, are as follows:
Accelerated Failure Time (
aft
) $$S(t) = S_0(\frac{t}{exp(lp)})$$Proportional Hazards (
ph
) $$S(t) = S_0(t)^{exp(lp)}$$Proportional Odds (
po
) $$S(t) = \frac{S_0(t)}{exp(-lp) + (1-exp(-lp)) S_0(t)}$$Tobit (
tobit
) $$S(t) = 1 - \Phi((t - lp)/s)$$
where \(S_0\) is the estimated baseline survival distribution (in this case with a given parametric form), \(lp\) is the predicted linear predictor, \(\Phi\) is the cdf of a \(N(0, 1)\) distribution, and \(s\) is the fitted scale parameter.
Whilst any combination of distribution and model form is possible, this does not mean it will necessarily create a sensible or interpretable prediction. The following combinations are 'sensible' (we note that ones mostly used in the literature):
dist = "gaussian"; form = "tobit";
dist = "weibull"; form = "ph"; (fairly used)
dist = "exponential"; form = "ph";
dist = "weibull"; form = "aft"; (fairly used, default option)
dist = "exponential"; form = "aft";
dist = "loglogistic"; form = "aft"; (fairly used)
dist = "lognormal"; form = "aft";
dist = "loglogistic"; form = "po";
Prediction types
This learner returns three prediction types:
lp
: a vector of linear predictors (relative risk scores), one per test observation.lp
is predicted using the formula \(lp = X\beta\) where \(X\) are the variables in the test data set and \(\beta\) are the fitted coefficients.crank
: same aslp
.distr
: a survival matrix in two dimensions, where observations are represented in rows and time points in columns. The distributiondistr
is composed using thelp
predictions and specifying a model form in theform
hyper-parameter, see Details. The survival matrix uses the unique time points from the training set. The parameterntime
allows to adjust the granularity of these time points to any number (e.g.150
).
Custom mlr3 parameters
discrete
determines the class of the returned survival probability distribution. IfFALSE
, vectorized continuous probability distributions are returned using distr6::VectorDistribution, otherwise a distr6::Matdist object, which is faster for calculating survival measures that require adistr
prediction type. Default option isTRUE
.
Meta Information
Task type: “surv”
Predict Types: “crank”, “distr”, “lp”
Feature Types: “logical”, “integer”, “numeric”, “factor”
Required Packages: mlr3, mlr3proba, mlr3extralearners, survival, pracma
Parameters
Id | Type | Default | Levels | Range |
form | character | aft | aft, ph, po, tobit | - |
na.action | untyped | - | - | |
dist | character | weibull | weibull, exponential, gaussian, lognormal, loglogistic | - |
parms | untyped | - | - | |
init | untyped | - | - | |
scale | numeric | 0 | \([0, \infty)\) | |
maxiter | integer | 30 | \((-\infty, \infty)\) | |
rel.tolerance | numeric | 1e-09 | \((-\infty, \infty)\) | |
toler.chol | numeric | 1e-10 | \((-\infty, \infty)\) | |
debug | integer | 0 | \([0, 1]\) | |
outer.max | integer | 10 | \((-\infty, \infty)\) | |
robust | logical | FALSE | TRUE, FALSE | - |
score | logical | FALSE | TRUE, FALSE | - |
cluster | untyped | - | - | |
discrete | logical | - | TRUE, FALSE | - |
ntime | integer | NULL | \([1, \infty)\) | |
round_time | integer | 2 | \([0, \infty)\) |
Installation
Package 'survivalmodels' is not on CRAN and has to be install from GitHub via
remotes::install_github("RaphaelS1/survivalmodels")
.
References
Kalbfleisch, D J, Prentice, L R (2011). The statistical analysis of failure time data. John Wiley & Sons.
See also
as.data.table(mlr_learners)
for a table of available Learners in the running session (depending on the loaded packages).Chapter in the mlr3book: https://mlr3book.mlr-org.com/basics.html#learners
mlr3learners for a selection of recommended learners.
mlr3cluster for unsupervised clustering learners.
mlr3pipelines to combine learners with pre- and postprocessing steps.
mlr3tuning for tuning of hyperparameters, mlr3tuningspaces for established default tuning spaces.
Super classes
mlr3::Learner
-> mlr3proba::LearnerSurv
-> LearnerSurvParametric
Methods
Method new()
Creates a new instance of this R6 class.
returned risk
from survivalmodels is hp-style
ie higher value => higher risk
Usage
LearnerSurvParametric$new()
Examples
# Define the Learner
learner = mlr3::lrn("surv.parametric")
print(learner)
#> <LearnerSurvParametric:surv.parametric>: Fully Parametric Learner
#> * Model: -
#> * Parameters: form=aft, dist=weibull, discrete=TRUE
#> * Packages: mlr3, mlr3proba, mlr3extralearners, survival, pracma
#> * Predict Types: [crank], distr, lp
#> * Feature Types: logical, integer, numeric, factor
#> * Properties: weights
# Define a Task
task = mlr3::tsk("grace")
# Create train and test set
ids = mlr3::partition(task)
# Train the learner on the training ids
learner$train(task, row_ids = ids$train)
print(learner$model)
#>
#> Parametric survival model
#>
#> Call:
#> survivalmodels::parametric(data = data.table::setDF(task$data()), time_variable = task$target_names[1L], status_variable = task$target_names[2L], dist = "weibull")
#>
#> Response:
#> Surv(time, status)
#> Features:
#> {(Intercept), age, los, revasc, revascdays, stchange, sysbp}
# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)
# Score the predictions
predictions$score()
#> surv.cindex
#> 0.8254871