from util import compute_median_survival_time, compute_mean_survival_time


def survival_time_nonconformity(predicted_survival_time,
        observed_time, event_ind):
    if event_ind == 1:
        return np.abs(observed_time - predicted_survival_time)
    else:
        return np.maximum(observed_time - predicted_survival_time, 0)


mean_predicted_survival_times = \
    np.array([compute_mean_survival_time(time_points, row) for row in surv])

median_predicted_survival_times = \
    np.array([compute_median_survival_time(time_points, row) for row in surv])


for survival_time_estimator in ['mean', 'median']:
    if survival_time_estimator == 'mean':
        predicted_survival_times = mean_predicted_survival_times.copy()
    else:
        predicted_survival_times = median_predicted_survival_times.copy()

    for calib_frac in np.linspace(0.1, 1, 10):
        print('[Split conformal prediction - %s, calib frac %f]'
              % (survival_time_estimator, calib_frac))

        rng = np.random.RandomState(conformal_prediction_random_seed)

        coverages = {conformal_prediction_CI_coverage: []
Exemple #2
0
             kernel_function=kernel_func)
     cum_hazard_scores = cum_haz.sum(axis=1)
     cindex = concordance_index(fold_y_val[:, 0],
                                -cum_hazard_scores,
                                fold_y_val[:, 1])
 elif cindex_method == 'cum_haz_from_surv':
     surv_thresholded = np.maximum(surv,
                                   np.finfo(float).eps)
     cum_haz = -np.log(surv_thresholded)
     cum_hazard_scores = cum_haz.sum(axis=1)
     cindex = concordance_index(fold_y_val[:, 0],
                                -cum_hazard_scores,
                                fold_y_val[:, 1])
 elif cindex_method == 'median':
     predicted_medians = \
         np.array([compute_median_survival_time(mesh_points,
                                                surv_row)
                   for surv_row in surv])
     cindex = concordance_index(fold_y_val[:, 0],
                                predicted_medians,
                                fold_y_val[:, 1])
 elif cindex_method == 'median_from_cum_haz':
     cum_haz = \
         surv_model.predict_cum_haz(
             fold_X_val_standardized,
             sorted_fold_y_val,
             presorted_times=True,
             kernel_function=kernel_func)
     predicted_medians = \
         np.array([compute_median_survival_time(mesh_points,
                                                surv_row)
                   for surv_row in np.exp(-cum_haz)])