Calibration Curves
Calibration evaluates how well predicted risks from a classification or time-to-event model align with observed outcome rates.
Standard Calibration (create_calibration_curve)
For binary outcomes:
import rtichoke as rk
fig = rk.create_calibration_curve(
probs={"Model A": probs_a},
reals=reals_binary,
calibration_type="smooth",
)calibration_type can be set to "discrete" (deciles) or "smooth" (lowess curve).
Time-Dependent Calibration (create_calibration_curve_times)
When evaluating risk predictions at a specific time horizon \(t\):
heuristics_sets = [
{
"censoring_heuristic": "adjusted",
"competing_heuristic": "adjusted_as_negative",
}
]
fig = rk.create_calibration_curve_times(
probs={"Model A": probs_a},
reals=reals_time_to_event,
times=times,
fixed_time_horizons=[3.0, 5.0],
heuristics_sets=heuristics_sets,
calibration_type="smooth",
smooth_method="local_aj",
)Smoothing Methods for Time-Dependent Calibration
When calibration_type="smooth", create_calibration_curve_times supports three distinct statistical smoothing methods via the smooth_method parameter:
1. Local Aalen-Johansen (smooth_method="local_aj", Default)
Gerds’ favoured local neighborhood method (riskRegression::plotCalibration(method="nne", cens.method="local")):
- Computes local Aalen-Johansen / Kaplan-Meier cumulative incidence estimates within nearest-neighborhood risk windows across predicted probabilities.
- Fully non-parametric and handles both standard survival and competing risks (\(0=\text{censored}\), \(1=\text{event}\), \(2=\text{competing event}\)).
- You can tune the neighborhood window using the optional
bandwidthparameter (e.g.,bandwidth=0.2).
2. Secondary Cox Model (smooth_method="secondary_cox")
Austin, Harrell & McLernon original time-to-event method (Austin et al. 2020 / McLernon et al. 2023):
- Fits a secondary cause-specific Cox proportional hazards model on the complementary log-log transformed predictions (\(\log(-\log(1-p))\)).
- Evaluates predicted cumulative incidence at horizon \(t\) across the grid of predicted probabilities.
3. Pseudo-Values LOWESS (smooth_method="pseudo_values")
Jackknife pseudo-observations method:
- Computes leave-one-out Aalen-Johansen pseudo-values for each subject at horizon \(t\).
- Applies LOWESS smoothing against predicted probabilities.
Discrete (Binned) Calibration
For binned decile plots at time horizons, pass calibration_type="discrete":
fig = rk.create_calibration_curve_times(
probs={"Model A": probs_a},
reals=reals_time_to_event,
times=times,
fixed_time_horizons=[5.0],
heuristics_sets=heuristics_sets,
calibration_type="discrete",
)