Comparison
tausurv puts classical, tree-based and neural survival models behind one predictor interface, so every model is fitted, predicted and scored the same way, competing risks included. The table shows where that coverage overlaps with the established Python libraries and where it falls short. For penalized Cox, time-varying covariates, left truncation and hypothesis tests, lifelines and scikit-survival remain the better choice today.
| Feature | tausurv | scikit-survival | lifelines | pycox | hazardous |
|---|---|---|---|---|---|
| Nonparametric | |||||
| Kaplan-Meier | Yes | Yes | Yes | No | No |
| Nelson-Aalen | Yes | Yes | Yes | No | No |
| Aalen-Johansen | Yes | Yes | Yes | No | No |
| Left truncation (delayed entry) | No | Yes | Yes | No | No |
| Log-rank test | No | Yes | Yes | No | No |
| Parametric univariate fits | No | No | Yes | No | No |
| Regression | |||||
| Cox proportional hazards | Yes | Yes | Yes | No | No |
| Penalized Cox (L1, L2, elastic net) | No | Yes | Yes | No | No |
| Time-varying covariates | No | No | Yes | No | No |
| Proportional-hazards test | No | No | Yes | No | No |
| AFT (Weibull, log-normal, log-logistic) | Yes | No | Yes | No | No |
| Aalen additive hazards | No | No | Yes | No | No |
| Fine-Gray | Yes | No | No | No | No |
| Trees and boosting | |||||
| Survival tree | Yes | Yes | No | No | No |
| Random survival forest | Yes | Yes | No | No | No |
| Gradient boosting | Yes | Yes | No | No | Yes |
| Competing-risks gradient boosting | Yes | No | No | No | Yes |
| Survival support vector machine | No | Yes | No | No | No |
| Neural networks | |||||
| DeepSurv | Yes | No | No | Yes | No |
| DeepHit, with competing risks | Yes | No | No | Yes | No |
| Logistic hazard | Yes | No | No | Yes | No |
| Cox-Time, MTLR, PC-Hazard | No | No | No | Yes | No |
| Deep survival machines | Yes | No | No | No | No |
| CopulaSurv (dependent censoring) | Yes | No | No | No | No |
| HACSurv (dependent competing risks) | Yes | No | No | No | No |
| Discrimination | |||||
| Harrell's concordance | Yes | Yes | Yes | No | No |
| Uno's concordance (IPCW) | Yes | Yes | No | No | No |
| Antolini's time-dependent concordance | Yes | No | No | Yes | No |
| Time-dependent AUC | Yes | Yes | No | No | No |
| Prediction error and calibration | |||||
| Brier score (IPCW) | Yes | Yes | No | Yes | Yes |
| Integrated Brier score | Yes | Yes | No | Yes | Yes |
| Censored negative log-likelihood 1 | Yes | No | No | No | No |
| CRPS | Yes | No | No | No | No |
| Calibration curve | Yes | No | Yes | No | Yes |
| D-calibration | Yes | No | No | No | No |
| Competing-risks metrics | |||||
| Cause-specific concordance | Yes | No | No | No | Yes |
| Cause-specific Brier score | Yes | No | No | No | Yes |
| Cause-specific AUC | Yes | No | No | No | No |
| Cause-specific calibration | Yes | No | No | No | Yes |
| Workflow | |||||
| Survival-aware cross-validation and tuning 2 | Yes | Partly | No | No | No |
| Nested cross-validation | Yes | No | No | No | No |
| Save and load fitted models 3 | Partly | Yes | Yes | Yes | Yes |
| Bundled datasets 4 | Yes | Yes | Yes | Yes | No |
| Survival curves with at-risk tables | Yes | No | Yes | No | No |
| Time-dependent SHAP plots 5 | Yes | No | No | No | No |
- pycox's nbll is the IPCW binomial log-likelihood, a Brier-type score, not the model likelihood.
- scikit-survival ships scorers for scikit-learn's search tools, without survival-specific folds or nested cross-validation.
- tausurv saves linear and neural models. SurvivalBoost pickles but has no save method; survival trees and forests can be neither saved nor pickled yet.
- tausurv bundles 100 published cohorts, each verified against a pinned checksum.
- tausurv plots SurvSHAP(t) values; computing them needs a SHAP library.
A cell is filled when the library ships a public class or function for exactly that feature. A subset (a ridge-only AFT), a workaround (Kaplan-Meier on the inverted event flag) or a neural stand-in for a classical model does not count. Checked on 2026-10-05 against scikit-survival 0.27.0, lifelines 0.30.3, pycox 0.3.0 and hazardous 0.2.0. If a cell is wrong, open an issue.