This function calculates the integrated Brier score metric for a survival model.
integrated_brier_score(y_true = NULL, risk = NULL, surv = NULL, times = NULL)
loss_integrated_brier_score(
y_true = NULL,
risk = NULL,
surv = NULL,
times = NULL
)
a survival::Surv
object containing the times and statuses of observations for which the metric will be evaluated
ignored, left for compatibility with other metrics
a matrix containing the predicted survival functions for the considered observations, each row represents a single observation, whereas each column one time point
a vector of time points at which the survival function was evaluated
numeric from 0 to 1, lower values indicate better performance
It is useful to see how a model performs as a whole, not at specific time points, for example for easier comparison. This function allows for calculating the integral of Brier score metric numerically using the trapezoid method.
[1] Brier, Glenn W. "Verification of forecasts expressed in terms of probability." Monthly Weather Review 78.1 (1950): 1-3.
[2] Graf, Erika, et al. "Assessment and comparison of prognostic classification schemes for survival data." Statistics in Medicine 18.17‐18 (1999): 2529-2545.
library(survival)
library(survex)
cph <- coxph(Surv(time, status) ~ ., data = veteran, model = TRUE, x = TRUE, y = TRUE)
cph_exp <- explain(cph)
#> Preparation of a new explainer is initiated
#> -> model label : coxph ( default )
#> -> data : 137 rows 6 cols ( extracted from the model )
#> -> target variable : 137 values ( 128 events and 9 censored , censoring rate = 0.066 ) ( extracted from the model )
#> -> times : 50 unique time points , min = 1.5 , median survival time = 80 , max = 999
#> -> times : ( generated from y as uniformly distributed survival quantiles based on Kaplan-Meier estimator )
#> -> predict function : predict.coxph with type = 'risk' will be used ( default )
#> -> predict survival function : predictSurvProb.coxph will be used ( default )
#> -> predict cumulative hazard function : -log(predict_survival_function) will be used ( default )
#> -> model_info : package survival , ver. 3.7.0 , task survival ( default )
#> A new explainer has been created!
y <- cph_exp$y
times <- cph_exp$times
surv <- cph_exp$predict_survival_function(cph, cph_exp$data, times)
# calculating directly
integrated_brier_score(y, surv = surv, times = times)
#> [1] 0.0574109