R: Integrated Log loss Survival Measure

mlr_measures_surv.intlogloss {mlr3proba} | R Documentation

## Integrated Log loss Survival Measure

### Description

Calculates the integrated survival logarithmic (log) (ISLL), loss, aka integrated cross entropy.

For an individual who dies at time t, with predicted Survival function, S, the probabilistic log loss at time t* is given by

L(S,t|t*) = - [log(1 - S(t*))I(t ≤ t*, δ = 1)(1/G(t))] - [log(S(t*))I(t > t*)(1/G(t*))]

# nolint where G is the Kaplan-Meier estimate of the censoring distribution.

The re-weighted ISLL, ISLL* is given by

L(S,t|t*) = - [log(1 - S(t*))I(t ≤ t*, δ = 1)(1/G(t))] - [log(S(t*))I(t > t*)(1/G(t))]

# nolint where G is the Kaplan-Meier estimate of the censoring distribution, i.e. always weighted by G(t). ISLL* is strictly proper when the censoring distribution is independent of the survival distribution and when G is fit on a sufficiently large dataset. ISLL is never proper. Use `proper = FALSE` for ISLL and `proper = TRUE` for ISLL*, in the future the default will be changed to `proper = TRUE`. Results may be very different if many observations are censored at the last observed time due to division by 1/`eps` in `proper = TRUE`.

If `integrated == FALSE` then the sample mean is taken for the single specified `times`, t*, and the returned score is given by

L(S,t|t*) = 1/N ∑_i^N L(S_i,t_i|t*)

where N is the number of observations, S_i is the predicted survival function for individual i and t_i is their true survival time.

If `integrated == TRUE` then an approximation to integration is made by either taking the sample mean over all T unique time-points (`method == 1`), or by taking a mean weighted by the difference between time-points (`method == 2`). Then the sample mean is taken over all N observations.

L(S) = 1/(NT) ∑_i^N ∑_j^T L(S_i,t_i|t*_j)

### Details

If `task` and `train_set` are passed to `$score` then G is fit on training data, otherwise testing data. The first is likely to reduce any bias caused by calculating parts of the measure on the test data it is evaluating. The training data is automatically used in scoring resamplings.

### Dictionary

This Measure can be instantiated via the dictionary mlr_measures or with the associated sugar function msr():

    MeasureSurvIntLogloss$new()
    mlr_measures$get("surv.intlogloss")
    msr("surv.intlogloss")

### Meta Information

- Type: `"surv"`

- Range: [0, Inf)

- Minimize: `TRUE`

- Required prediction: `distr`

### Super classes

`mlr3::Measure` -> `mlr3proba::MeasureSurv` -> `mlr3proba::MeasureSurvIntegrated` -> `MeasureSurvIntLogloss`

### Active bindings

`se`

  `(logical(1))`
  If `TRUE` returns the standard error of the measure.

### Methods

#### Public methods

- `MeasureSurvIntLogloss$new()`

- `MeasureSurvIntLogloss$clone()`

Inherited methods

- `mlr3::Measure$aggregate()`

- `mlr3::Measure$format()`

- `mlr3::Measure$help()`

- `mlr3::Measure$score()`

- `mlr3proba::MeasureSurv$print()`

#### Method `new()`

Creates a new instance of this R6 class.

##### Usage

    MeasureSurvIntLogloss$new(
      integrated = TRUE,
      times,
      eps = 0.000000000000001,
      method = 2,
      se = FALSE,
      proper = FALSE
    )

##### Arguments

`integrated`

  (`logical(1)`)
  If `TRUE` (default), returns the integrated score; otherwise, not integrated.

`times`

  (`numeric()`)
  If `integrate == TRUE` then a vector of time-points over which to integrate the score. If `integrate == FALSE` then a single time point at which to return the score.

`eps`

  (`numeric(1)`)
  Very small number to set zero-valued predicted probabilities to in order to prevent errors in log(0) and 1/0 calculation.

`method`

  (`integer(1)`)
  If `integrate == TRUE` selects the integration weighting method. `method == 1` corresponds to weighting each time-point equally and taking the mean score over discrete time-points. `method == 2` corresponds to calculating a mean weighted by the difference between time-points. `method == 2` is default to be in line with other packages.

`se`

  (`logical(1)`)
  If `TRUE` returns the standard error of the measure.

`proper`

  (`logical(1)`)
  If `TRUE` then weights scores by the censoring distribution at the observed event time, which results in a strictly proper scoring rule if censoring and survival time distributions are independent and a sufficiently large dataset is used to weight the measure. If `FALSE` then weights scores by the Graf method which is the more common usage but the loss is not proper. In v0.5.0, the default will be changed to `TRUE`.

#### Method `clone()`

The objects of this class are cloneable with this method.

##### Usage

    MeasureSurvIntLogloss$clone(deep = FALSE)

##### Arguments

`deep`

  Whether to make a deep clone.

### References

Graf E, Schmoor C, Sauerbrei W, Schumacher M (1999). “Assessment and comparison of prognostic classification schemes for survival data.” Statistics in Medicine, 18(17-18), 2529–2545. doi: 10.1002/(sici)1097-0258(19990915/30)18:17/18<2529::aid-sim274>3.0.co;2-5.

### See Also

Other survival measures: `mlr_measures_surv.calib_alpha`, `mlr_measures_surv.calib_beta`, `mlr_measures_surv.chambless_auc`, `mlr_measures_surv.cindex`, `mlr_measures_surv.dcalib`, `mlr_measures_surv.graf`, `mlr_measures_surv.hung_auc`, `mlr_measures_surv.logloss`, `mlr_measures_surv.mae`, `mlr_measures_surv.mse`, `mlr_measures_surv.nagelk_r2`, `mlr_measures_surv.oquigley_r2`, `mlr_measures_surv.rmse`, `mlr_measures_surv.schmid`, `mlr_measures_surv.song_auc`, `mlr_measures_surv.song_tnr`, `mlr_measures_surv.song_tpr`, `mlr_measures_surv.uno_auc`, `mlr_measures_surv.uno_tnr`, `mlr_measures_surv.uno_tpr`, `mlr_measures_surv.xu_r2`

Other Probabilistic survival measures: `mlr_measures_surv.graf`, `mlr_measures_surv.logloss`, `mlr_measures_surv.schmid`

Other distr survival measures: `mlr_measures_surv.calib_alpha`, `mlr_measures_surv.dcalib`, `mlr_measures_surv.graf`, `mlr_measures_surv.logloss`, `mlr_measures_surv.schmid`

[Package mlr3proba version 0.4.2 Index]