Skip to contents

This object stores the predictions returned by a learner of class LearnerSurv.

The task_type is set to "surv".

For accessing survival and hazard functions, as well as other complex methods from a PredictionSurv object, see public methods on distr6::ExoticStatistics() and example below.

See also

Other Prediction: PredictionDens

Super class

mlr3::Prediction -> PredictionSurv

Active bindings

truth

(Surv)
True (observed) outcome.

crank

(numeric())
Access the stored predicted continuous ranking.

distr

(distr6::Matdist|distr6::Arrdist|distr6::VectorDistribution)
Convert the stored survival array or matrix to a survival distribution.

lp

(numeric())
Access the stored predicted linear predictor.

response

(numeric())
Access the stored predicted survival time.

Methods

Inherited methods


Method new()

Creates a new instance of this R6 class.

Usage

PredictionSurv$new(
  task = NULL,
  row_ids = task$row_ids,
  truth = task$truth(),
  crank = NULL,
  distr = NULL,
  lp = NULL,
  response = NULL,
  check = TRUE
)

Arguments

task

(TaskSurv)
Task, used to extract defaults for row_ids and truth.

row_ids

(integer())
Row ids of the predicted observations, i.e. the row ids of the test set.

truth

(survival::Surv())
True (observed) response.

crank

(numeric())
Numeric vector of predicted continuous rankings (or relative risks). One element for each observation in the test set. For a pair of continuous ranks, a higher rank indicates that the observation is more likely to experience the event.

distr

(matrix()|[distr6::Arrdist]|[distr6::Matdist]|[distr6::VectorDistribution])
Either a matrix of predicted survival probabilities, a distr6::VectorDistribution, a distr6::Matdist or an distr6::Arrdist. If a matrix/array then column names must be given and correspond to survival times. Rows of matrix correspond to individual predictions. It is advised that the first column should be time 0 with all entries 1 and the last with all entries 0. If a VectorDistribution then each distribution in the vector should correspond to a predicted survival distribution.

lp

(numeric())
Numeric vector of linear predictor scores. One element for each observation in the test set. \(lp = X\beta\) where \(X\) is a matrix of covariates and \(\beta\) is a vector of estimated coefficients.

response

(numeric())
Numeric vector of predicted survival times. One element for each observation in the test set.

check

(logical(1))
If TRUE, performs argument checks and predict type conversions.

Details

Upon initialization, if the distr input is a Distribution, we try to coerce it either to a survival matrix or a survival array and store it in the $data$distr slot for internal use.

If the stored $data$distr is a Distribution object, the active field $distr (external user API) returns it without modification. Otherwise, if $data$distr is a survival matrix or array, $distr constructs a distribution out of the $data$distr object, which will be a Matdist or Arrdist respectively.

Note that if a survival 3d array is stored in $data$distr, the $distr field returns an Arrdist initialized with which.curve = 0.5 by default (i.e. the median curve). This means that measures that require a distr prediction like MeasureSurvGraf, MeasureSurvRCLL, etc. will use the median survival probabilities. Note that it is possible to manually change which.curve after construction of the predicted distribution but we advise against this as it may lead to inconsistent results.


Method clone()

The objects of this class are cloneable with this method.

Usage

PredictionSurv$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

library(mlr3)
task = tsk("rats")
learner = lrn("surv.kaplan")
p = learner$train(task, row_ids = 1:26)$predict(task, row_ids = 27:30)
head(as.data.table(p))
#>    row_ids  time status     crank     distr
#>      <int> <num> <lgcl>     <num>    <list>
#> 1:      27   104  FALSE 0.4706486 <list[1]>
#> 2:      28   104  FALSE 0.4706486 <list[1]>
#> 3:      29   104  FALSE 0.4706486 <list[1]>
#> 4:      30    98  FALSE 0.4706486 <list[1]>

p$distr # distr6::Matdist class (test obs x time points)
#> Matdist(4x12) 

# survival probabilities of the 4 test rats at two time points
p$distr$survival(c(20, 100))
#>          [,1]      [,2]      [,3]      [,4]
#> 20  1.0000000 1.0000000 1.0000000 1.0000000
#> 100 0.9615385 0.9615385 0.9615385 0.9615385