sksurv.metrics.
integrated_brier_score
The Integrated Brier Score (IBS) provides an overall calculation of the model performance at all available times \(t_1 \leq t \leq t_\text{max}\).
The integrated time-dependent Brier score over the interval \([t_1; t_\text{max}]\) is defined as
where the weighting function is \(w(t) = t / t_\text{max}\). The integral is estimated via the trapezoidal rule.
See the User Guide and 1 for further details.
survival_train (structured array, shape = (n_train_samples,)) – Survival times for training data to estimate the censoring distribution from. A structured array containing the binary event indicator as first field, and time of event or time of censoring as second field.
survival_test (structured array, shape = (n_samples,)) – Survival times of test data. A structured array containing the binary event indicator as first field, and time of event or time of censoring as second field.
estimate (array-like, shape = (n_samples, n_times)) – Estimated risk of experiencing an event for test data at times. The i-th column must contain the estimated probability of remaining event-free up to the i-th time point.
times (array-like, shape = (n_times,)) – The time points for which to estimate the Brier score. Values must be within the range of follow-up times of the test data survival_test.
ibs – The integrated Brier score.
float
Examples
>>> import numpy >>> from sksurv.datasets import load_gbsg2 >>> from sksurv.linear_model import CoxPHSurvivalAnalysis >>> from sksurv.metrics import integrated_brier_score >>> from sksurv.preprocessing import OneHotEncoder
Load and prepare data.
>>> X, y = load_gbsg2() >>> X.loc[:, "tgrade"] = X.loc[:, "tgrade"].map(len).astype(int) >>> Xt = OneHotEncoder().fit_transform(X)
Fit a Cox model.
>>> est = CoxPHSurvivalAnalysis(ties="efron").fit(Xt, y)
Retrieve individual survival functions and get probability of remaining event free from 1 year to 5 years (=1825 days).
>>> survs = est.predict_survival_function(Xt) >>> times = numpy.arange(365, 1826) >>> preds = numpy.asarray([[fn(t) for t in times] for fn in survs])
Compute the integrated Brier score from 1 to 5 years.
>>> score = integrated_brier_score(y, y, preds, times) >>> print(score) 0.1815853064627424
See also
brier_score()
References
E. Graf, C. Schmoor, W. Sauerbrei, and M. Schumacher, “Assessment and comparison of prognostic classification schemes for survival data,” Statistics in Medicine, vol. 18, no. 17-18, pp. 2529–2545, 1999.