surv_bart
bart_survival.surv_bart
High-level API for Bayesian Additive Regression Trees (BART) survival analysis.
Provides: - SurvBART (alias BartSurvModel): Estimator class with fit, predict, and serialization. - format_survival_data (alias get_surv_pre_train): Preprocess time-to-event data into pooled cross-sections. - format_prediction_data (alias get_posterior_test): Prepare test covariates across prediction time intervals. - compute_survival_curves (alias get_sv_prob): Cumulative product survival probability transformation. - compute_pdp (alias get_pdp): Partial dependence data generation. - compute_causal_pdp (alias get_causal_pdp): Causal G-Computation with support violation audit. - compute_hazard_ratio (alias pdp_rr_metric): Posterior Risk Ratio / Hazard Ratio extraction. - compute_pdp_difference (alias pdp_diff_metric): Posterior marginal survival difference extraction.
- class bart_survival.surv_bart.BartSurvModel(trees: int = 50, draws: int = 2500, tune: int = 1000, chains: int = 4, cores: int | None = None, thin: int = 10, thin_idata: bool = False, use_sparsity: bool = False, split_method: str = 'empirical', max_cutpoints: int = 512, update_fraction: float = 1.0, min_node_size: int = 5, k: float = 2.0, alpha: float = 0.95, beta: float = 2.0, sparsity_warmup: int | None = None, unique_midpoints: bool | None = None, split_rules: List[Any] | None = None, split_prior: Any | None = None, model_config: Dict[str, Any] | None = None, sampler_config: Dict[str, Any] | None = None)
Bayesian Additive Regression Trees (BART) Survival Model (SurvBART).
Implements discrete-time probit hazard modeling using an ensemble of sum-of-trees. Supports warm-started Dirichlet sparsity selection (DART), empirical unique midpoint cutpoints (512 resolution), MCMC thinning, and support-audited Causal G-Computation.
- bart_predict(X_pred: ndarray, coords: ndarray, size: int = None, rng: RandomState = None, **kwargs) DataArray
Derives posterior predictions on updated dataset. Alternative method for re-loaded models.
- Parameters:
X_pred (np.ndarray) – Covariate matrix in long-time format.
coords (np.ndarray) – Coordinates associated with long-time format.
size (int, optional) – Sets sample of posterior draws. Defaults to None.
rng (RandomState, optional) – Random number generator for reproducable results. Defaults to None.
- Returns:
DataArray containing the predicted outputs from the model and covariate matrix.
- Return type:
xr.DataArray
- build_model(X: ndarray, y: ndarray, weights: ndarray | None = None, coords: ndarray | None = None, predictor_names: List[str] | None = None, **kwargs: Any) Model
Builds the PyMC probabilistic model for BART discrete-time survival.
- Parameters:
X (np.ndarray) – Covariate matrix in long-time form [time, x1, x2, …].
y (np.ndarray) – Event status in long-time form (0=censored/alive, 1=event).
weights (Optional[np.ndarray], optional) – Sample observation weights. Defaults to None.
coords (Optional[np.ndarray], optional) – Subject coordinate index alignment. Defaults to None.
predictor_names (Optional[List[str]], optional) – Variable names. Defaults to None.
**kwargs – Additional model parameters.
- Returns:
The compiled PyMC model.
- Return type:
pm.Model
- close() None
Explicitly releases background SyncManager server processes and frees IPC memory.
- estimate_effect(X: ndarray | DataFrame, primary_col: str | int = 'inpatient', values: List[int | float] | None = None, delta: float | None = None, shift: bool | None = None, times: ndarray | List[float] | None = None, audit_support: bool = True, donor_seed: int | None = 42, event_weights: ndarray | None = None, clip_to_range: bool = False, **kwargs: Any) Dict[str, Any]
Estimates counterfactual treatment effects using Causal G-Computation and Modified Treatment Policies.
Supports both: 1. Binary / Categorical exposures: Audits conditional support for positivity violations (e.g. deterministic
zeros like LOS=0 for outpatients) and re-routes dependent features to conditional donor resampling.
Continuous exposures: Evaluates a counterfactual shift intervention (Modified Treatment Policy) comparing natural course (X) vs shifted exposure (X + delta). Alternatively evaluates fixed 2-point contrasts if explicit values=[v0, v1] are supplied.
Metrics computed: - Event-weighted summary Hazard Ratio (default, Cox-aligned via complementary log-log link). - Unweighted summary Hazard Ratio across follow-up intervals. - Time-varying Hazard Ratio curve HR(t) via complementary log-log link. - Time-varying discrete risk ratio curve RR_discrete(t) = h1(t) / h0(t) (not averaged). - Time-varying Risk Difference curve RD(t) = Risk_1(t) - Risk_0(t) = S_0(t) - S_1(t) (1 over 0). - Survival Difference curve S_1(t) - S_0(t) = -RD(t). - Event-weighted and unweighted summary Risk Differences. - Final horizon Risk Difference RD(t_end). - Restricted Mean Survival Time (RMST) difference.
- Parameters:
X (Union[np.ndarray, pd.DataFrame]) – Baseline cohort covariates.
primary_col (Union[str, int], optional) – Primary exposure variable name or column index. Defaults to “inpatient”.
values (Optional[List[Union[int, float]]], optional) – Counterfactual intervention values. If None, auto-detects binary exposures ([0, 1]) or triggers continuous shift intervention.
delta (Optional[float], optional) – Shift increment for continuous exposures (X + delta). Defaults to 1.0.
shift (Optional[bool], optional) – Force continuous shift intervention mode. Defaults to None.
times (Optional[Union[np.ndarray, List[float]]], optional) – Evaluation time points. Defaults to None.
audit_support (bool, optional) – Whether to audit and flag support violations. Defaults to True.
donor_seed (Optional[int], optional) – Random seed for reproducible donor resampling. Defaults to 42.
event_weights (Optional[np.ndarray], optional) – Normalized interval weights for summary HR/RD. Defaults to model’s empirical event_weights_ if available.
clip_to_range (bool, optional) – Whether to clip continuous shifted values to observed maximum. Defaults to False.
**kwargs – Additional prediction keyword arguments.
- Returns:
Dictionary containing weighted and unweighted HRs, RDs, RMST, curves, credible intervals, and draws.
- Return type:
Dict[str, Any]
- feature_importance(sort: bool = True) Series
Extracts normalized variable split inclusion proportions from the posterior tree ensemble.
- Parameters:
sort (bool, optional) – Whether to sort features in descending order of importance. Defaults to True.
- Returns:
Feature importance series indexed by predictor names.
- Return type:
pd.Series
- fit(y: ndarray, X: ndarray, weights: ndarray | None = None, coords: ndarray | None = None, progressbar: bool = True, predictor_names: List[str] | None = None, random_seed: int | RandomState | None = None, **kwargs: Any) DataTree
Fit the BART survival model using MCMC sampling.
- Parameters:
y (np.ndarray) – Binary event indicator in long-time pooled format (1=event, 0=censored/alive).
X (np.ndarray) – Covariate matrix in long-time format where column 0 is discrete time, followed by baseline covariates [time, x1, x2, …].
weights (Optional[np.ndarray], optional) – Sample observation weights (e.g. for case-cohort designs). Defaults to None.
coords (Optional[np.ndarray], optional) – Subject coordinate index alignment for observations. Defaults to None.
progressbar (bool, optional) – Whether to display MCMC progress bar. Defaults to True.
predictor_names (Optional[List[str]], optional) – Names of features in X matrix. Defaults to None.
random_seed (Optional[Union[int, RandomState]], optional) – Random seed for reproducibility. Defaults to None.
**kwargs – Additional sampling configuration overrides (e.g. draws, tune, cores, chains).
- Returns:
Posterior inference data object containing sampled trees and chain statistics.
- Return type:
az.InferenceData
- fit_survival(X: ndarray | DataFrame, time: ndarray | Series | List[float], status: ndarray | Series | List[int], time_scale: float | None = None, weights: ndarray | None = None, progressbar: bool = True, random_seed: int | RandomState | None = None, **kwargs: Any) DataTree
Fits SurvBART directly from baseline tabular covariates and survival outcomes.
Eliminates manual boilerplate by automatically discretizing follow-up times and expanding tabular data into long-format person-time pooled cross-sections.
- Parameters:
X (Union[np.ndarray, pd.DataFrame]) – Baseline covariates.
time (Union[np.ndarray, pd.Series, List[float]]) – Observed event or censoring times.
status (Union[np.ndarray, pd.Series, List[int]]) – Binary event indicators (1=event, 0=censored).
time_scale (Optional[float], optional) – Interval discretization scale factor (e.g. 5 or 30). Defaults to None.
weights (Optional[np.ndarray], optional) – Sample observation weights. Defaults to None.
progressbar (bool, optional) – Whether to display MCMC progress bar. Defaults to True.
random_seed (Optional[Union[int, RandomState]], optional) – Random seed. Defaults to None.
**kwargs – Additional sampling keyword overrides.
- Returns:
Fitted posterior inference data object.
- Return type:
az.InferenceData
- static get_default_model_config() Dict[str, Any]
Default model prior and tree ensemble configuration.
- static get_default_sampler_config() Dict[str, Any]
Default sampler and MCMC inference configuration.
- property id: str
Generate a unique hash value for the model.
The hash value is created using the last 16 characters of the SHA256 hash encoding, based on the model configuration, version, and model type.
- Returns:
A string of length 16 characters containing a unique hash of the model.
- Return type:
str
- classmethod load(fname: str, treename: str)
Loads a saved model.
- Parameters:
fname (str) – Path to saved model object.
treename (str) – Path to saved tree object.
- Returns:
Returns object of SurvBartModel class.
- Return type:
_type_
- predict(X_pred: ndarray, coords: ndarray | None = None, **kwargs: Any) ndarray
Alias for sample_posterior_predictive following scikit-learn convention.
- Parameters:
X_pred (np.ndarray) – Covariate matrix in long-time format [time, x1, x2, …].
coords (Optional[np.ndarray], optional) – Coordinates associated with subject indices. Defaults to None.
**kwargs – Additional prediction keyword options.
- Returns:
Array of shape (n_draws, n_obs) containing predicted hazard probabilities.
- Return type:
np.ndarray
- predict_survival(X_test: ndarray | DataFrame, times: ndarray | List[float] | None = None, return_quantiles: bool = False, qntile: List[float] = [0.025, 0.975], **kwargs: Any) ndarray | Dict[str, ndarray]
Calculates out-of-sample cumulative survival curves S(t) for new subjects.
- Parameters:
X_test (Union[np.ndarray, pd.DataFrame]) – Baseline covariates for test cohort.
times (Optional[Union[np.ndarray, List[float]]], optional) – Discrete time evaluation grid. If None, uses unique event times observed during training. Defaults to None.
return_quantiles (bool, optional) – If True, returns mean and credible interval quantiles. If False, returns full posterior draws of shape (n_draws, n_subjects, n_times). Defaults to False.
qntile (List[float], optional) – Credible interval quantiles. Defaults to [0.025, 0.975].
**kwargs – Additional prediction keyword arguments.
- Returns:
Full survival curve array or summary dict.
- Return type:
Union[np.ndarray, Dict[str, np.ndarray]]
- classmethod preset_default(**overrides: Any) BartSurvModel
Default recommended preset (alias for preset_standard).
- classmethod preset_fast(**overrides: Any) BartSurvModel
Fast exploration preset: 25 trees, 500 draws, 250 tune, 4 chains, thin 5, update_fraction 1.0.
- classmethod preset_high_precision(**overrides: Any) BartSurvModel
High-precision publication preset: 100 trees, 5000 draws, 2000 tune, 4 chains, thin 10, update_fraction 1.0.
- classmethod preset_production(**overrides: Any) BartSurvModel
Legacy alias for preset_standard.
- classmethod preset_standard(**overrides: Any) BartSurvModel
Standard scientific preset: 50 trees, 1,000 draws, 250 tune, 4 chains, thin 4 (1,000 final draws), update_fraction 1.0, empirical cutpoints.
- sample_model(**kwargs: Any) DataTree
Initiates training/sampling of the model.
- Returns:
Posterior data collected from training the model.
- Return type:
az.InferenceData
- sample_posterior_predictive(X_pred: ndarray, coords: ndarray | None = None, extend_idata: bool = False, **kwargs: Any) ndarray
Derives posterior predictive hazard probabilities on new covariates.
- Parameters:
X_pred (np.ndarray) – Covariate matrix in long-time format [time, x1, x2, …].
coords (Optional[np.ndarray], optional) – Coordinates associated with subject indices. Defaults to None.
extend_idata (bool, optional) – Legacy compatibility flag. Defaults to False.
**kwargs – Additional keyword arguments.
- Returns:
Array of shape (n_draws, n_obs) containing predicted hazard probabilities.
- Return type:
np.ndarray
- save(idata_name: str, all_tree_name: str) None
Saves a trained model and tree object.
- Parameters:
idata_name (str) – Path to saving model object.
all_tree_name (str) – Path to saving tree object.
- set_idata_attrs(idata: DataTree | None = None) DataTree
Sets the additional information in the idata object.
- Parameters:
idata (Optional[az.InferenceData], optional) – Idata. Defaults to None.
- Returns:
Idata
- Return type:
az.InferenceData
- bart_survival.surv_bart.SurvBART
alias of
BartSurvModel
- bart_survival.surv_bart.compute_causal_pdp(x: DataFrame, primary_col: str | int = 'inpatient', values: list = [0, 1], audit_support: bool = True, donor_seed: int | None = 42) Tuple[ndarray, Dict, List[str]]
Generates counterfactual data for Causal G-Computation with support violation audit.
Identifies dependent features or post-exposure mediators that have structural support or positivity violations with the primary exposure (e.g., deterministic zeros like LOS=0 when Inpatient=0). Performs conditional donor resampling for dependent features while leaving baseline confounders intact, strictly avoiding off-support extrapolation.
- Parameters:
x (pd.DataFrame) – Baseline covariate dataframe.
primary_col (Union[str, int]) – Primary exposure column name or index.
values (list, optional) – Counterfactual intervention values. Defaults to [0, 1].
audit_support (bool, optional) – Whether to audit and flag support violations. Defaults to True.
donor_seed (int, optional) – Random seed for reproducible donor resampling. Defaults to 42.
- Returns:
out_sk: Stacked counterfactual covariate matrix.
c_idx: Index coordinate dictionary compatible with get_posterior_test.
dependent_features: List of audited features exhibiting support violations.
- Return type:
Tuple[np.ndarray, Dict, List[str]]
- bart_survival.surv_bart.compute_hazard_and_risk_difference(pdp_val: Dict[str, ndarray], idx: int, event_weights: ndarray | None = None, qntile: List[float] = [0.025, 0.975], eps: float = 1e-07) Dict[str, Any]
Computes event-weighted and unweighted Hazard Ratios and Risk Differences from counterfactual predictions.
Contrasts Intervention Arm 1 (obs >= idx) over Reference Arm 0 (obs < idx).
Calculates: - Event-weighted summary Hazard Ratio (default, Cox-aligned via complementary log-log link). - Unweighted summary Hazard Ratio across follow-up intervals. - Time-varying Hazard Ratio curve HR(t) via complementary log-log link. - Time-varying discrete risk ratio curve RR_discrete(t) = h1(t) / h0(t) (not averaged). - Time-varying Risk Difference curve RD(t) = Risk_1(t) - Risk_0(t) = S_0(t) - S_1(t) (1 over 0). - Survival Difference curve S_1(t) - S_0(t) = -RD(t). - Event-weighted and unweighted summary Risk Differences. - Final horizon Risk Difference RD(t_end). - Restricted Mean Survival Time (RMST) difference.
- Parameters:
pdp_val (Dict[str, np.ndarray]) – Dictionary containing ‘prob’ (hazards) and ‘sv’ (survival curves). Arrays have shape (n_draws, 2 * N, n_times).
idx (int) – Split index demarcating Reference Arm 0 (:idx) and Intervention Arm 1 (idx:).
event_weights (Optional[np.ndarray], optional) – Normalized event weights per interval. If None, defaults to uniform interval weighting.
qntile (List[float], optional) – Credible interval quantiles. Defaults to [0.025, 0.975].
eps (float, optional) – Epsilon threshold for numerical safety. Defaults to 1e-7.
- Returns:
Comprehensive dictionary containing summary statistics, credible intervals, and draw arrays.
- Return type:
Dict[str, Any]
- bart_survival.surv_bart.compute_hazard_ratio(pdp_val: Dict[str, ndarray], idx: int, qntile: List[float] = [0.025, 0.975]) Dict[str, ndarray]
Generates posterior Hazard Ratio / Risk Ratio between counterfactual intervention groups.
- Parameters:
pdp_val (Dict[str, np.ndarray]) – Posterior output dictionary containing ‘prob’.
idx (int) – Split index demarcating counterfactual groups in stacked PDP matrix.
qntile (List[float], optional) – Quantiles for credible interval. Defaults to [0.025, 0.975].
- Returns:
‘rr_m’: Posterior mean hazard ratio curve across time points.
’rr_q’: Posterior credible interval quantiles of the hazard ratio curve.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.compute_pdp(x: ndarray | DataFrame, var_col: List[int | str] = [], values: List[int | float] = [], qt: List[float] = [0.25, 0.5, 0.75], sample_n=None, method: str = 'marginal', audit_support: bool = False) Tuple[ndarray, Dict] | Tuple[ndarray, Dict, List[str]]
Generates data for Partial Dependency Plots or Causal G-Computation.
- Parameters:
x (Union[np.ndarray, pd.DataFrame]) – Covariate matrix or DataFrame.
var_col (List[Union[int, str]], optional) – Covariate column to generate pdp values. Defaults to [].
values (List[Union[int, float]], optional) – Values to test on for each covariate. Defaults to [].
qt (List[float], optional) – Quantiles to generate values on if none are given. Defaults to [0.25, 0.5, 0.75].
sample_n (int, optional) – Sample size of large dataset. Useful for working with large datasets. Defaults to None.
method (str, optional) – ‘marginal’ for standard PDP, or ‘causal’ for support-audited G-Computation. Defaults to ‘marginal’.
audit_support (bool, optional) – If True, audits for positivity/support violations. Defaults to False.
- Returns:
PDP covariate matrix and tracking dictionary.
- Return type:
Union[Tuple[np.ndarray, Dict], Tuple[np.ndarray, Dict, List[str]]]
- bart_survival.surv_bart.compute_pdp_difference(pdp_val: Dict[str, ndarray], idx: int, qntile: List[float] = [0.025, 0.975]) Dict[str, ndarray]
Generates posterior estimate of marginal survival difference between counterfactual groups.
- Parameters:
pdp_val (Dict[str, np.ndarray]) – Posterior output dictionary containing ‘sv’.
idx (int) – Split index demarcating counterfactual groups in stacked PDP matrix.
qntile (List[float], optional) – Quantiles for credible interval. Defaults to [0.025, 0.975].
- Returns:
‘diff_m’: Posterior mean survival difference curve across time points.
’diff_q’: Posterior credible interval quantiles of the difference curve.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.compute_shift_pdp(x: DataFrame | ndarray, primary_col: str | int, delta: float = 1.0, clip_to_range: bool = False) Tuple[ndarray, Dict[str, Any]]
Generates counterfactual datasets for a continuous shift intervention (Modified Treatment Policy).
Contrasts the natural course cohort (Arm 0: X) against a cohort where every individual’s continuous exposure is shifted by delta units (Arm 1: X + delta).
- Parameters:
x (Union[pd.DataFrame, np.ndarray]) – Baseline covariate matrix or DataFrame.
primary_col (Union[str, int]) – Continuous variable name or column index to shift.
delta (float, optional) – Increment added to primary_col. Defaults to 1.0.
clip_to_range (bool, optional) – Whether to clip shifted values to observed maximum. Defaults to False.
- Returns:
out_sk: Stacked counterfactual matrix of shape (2 * N, n_features).
c_idx: Index coordinate dictionary demarcating Arm 0 and Arm 1.
- Return type:
Tuple[np.ndarray, Dict[str, Any]]
- bart_survival.surv_bart.compute_survival_curves(post: ndarray | DataArray | Dataset, coords: ndarray) Dict[str, ndarray]
Generates discrete-time hazard and cumulative survival probability estimates.
Computes S(t) = prod_{s=1}^t (1 - h(s)) across all posterior draws and subjects.
- Parameters:
post (Union[np.ndarray, xr.DataArray, xr.Dataset]) – Posterior predictive hazard draws.
coords (np.ndarray) – Subject coordinate indices to reshape predictions per subject and time.
- Returns:
‘prob’: Hazard probability array of shape (n_draws, n_subjects, n_time_points).
’sv’: Cumulative survival probability array of shape (n_draws, n_subjects, n_time_points).
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.compute_survival_quantiles(sv: ndarray, msk: ndarray, draws: bool = True, qntile: List[float] = [0.025, 0.975]) Dict[str, ndarray]
Generates mean and quantile estimates of Survival Probabilities.
- Parameters:
sv (np.ndarray) – Survival probabilities of shape (n_draws, n_obs, n_times).
msk (np.ndarray) – Boolean mask selecting subpopulation of interest.
draws (bool, optional) – If True, aggregates across posterior draws. Defaults to True.
qntile (List[float], optional) – Credible interval quantiles. Defaults to [0.025, 0.975].
- Returns:
Mean and quantile curves for masked and unmasked groups.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.format_prediction_data(y_time: ndarray, y_status: ndarray, x: ndarray, time_scale: float | None = None) Dict[str, ndarray]
Generates evaluation grid in long-time format for out-of-sample posterior predictions.
Constructs counterfactual cross-product of discrete evaluation times and subject covariates.
- Parameters:
y_time (np.ndarray) – Follow-up times defining the discrete time evaluation grid.
y_status (np.ndarray) – Event indicators (used for historical reference).
x (np.ndarray) – Baseline covariate matrix to evaluate.
time_scale (Optional[float], optional) – Time discretization scale. Defaults to None.
- Returns:
‘post_x’: Evaluated covariate matrix with time in column 0.
’coords’: Subject coordinate identifier array.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.format_survival_data(y_time: ndarray, y_status: ndarray, x: ndarray, weight: ndarray | None = None, time_scale: float | None = None) Dict[str, ndarray]
Generates pooled cross-sectional long-format dataset for discrete-time survival training.
Transforms right-censored time-to-event outcomes into person-time binary event observations. Each individual contributes records for discrete intervals $t = 1, 2, dots, T_i$.
- Parameters:
y_time (np.ndarray) – Array of observed follow-up times.
y_status (np.ndarray) – Binary event indicator (1 if event occurred, 0 if right-censored).
x (np.ndarray) – Baseline covariate matrix of shape (n_individuals, n_features).
weight (Optional[np.ndarray], optional) – Observation weights (e.g. for case-cohort designs). Defaults to 1.0.
time_scale (Optional[float], optional) – Time discretization scale (e.g. 5 for 5-day intervals). Defaults to None.
- Returns:
‘y’: Binary event indicator array of shape (n_person_time, 1).
’x’: Long-format covariate matrix where column 0 is discrete time, followed by covariates.
’w’: Observation weights aligned with person-time rows.
’coord’: Individual identifier integer array linking person-time rows to subjects.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.get_causal_pdp(x: DataFrame, primary_col: str | int = 'inpatient', values: list = [0, 1], audit_support: bool = True, donor_seed: int | None = 42) Tuple[ndarray, Dict, List[str]]
Generates counterfactual data for Causal G-Computation with support violation audit.
Identifies dependent features or post-exposure mediators that have structural support or positivity violations with the primary exposure (e.g., deterministic zeros like LOS=0 when Inpatient=0). Performs conditional donor resampling for dependent features while leaving baseline confounders intact, strictly avoiding off-support extrapolation.
- Parameters:
x (pd.DataFrame) – Baseline covariate dataframe.
primary_col (Union[str, int]) – Primary exposure column name or index.
values (list, optional) – Counterfactual intervention values. Defaults to [0, 1].
audit_support (bool, optional) – Whether to audit and flag support violations. Defaults to True.
donor_seed (int, optional) – Random seed for reproducible donor resampling. Defaults to 42.
- Returns:
out_sk: Stacked counterfactual covariate matrix.
c_idx: Index coordinate dictionary compatible with get_posterior_test.
dependent_features: List of audited features exhibiting support violations.
- Return type:
Tuple[np.ndarray, Dict, List[str]]
- bart_survival.surv_bart.get_pdp(x: ndarray | DataFrame, var_col: List[int | str] = [], values: List[int | float] = [], qt: List[float] = [0.25, 0.5, 0.75], sample_n=None, method: str = 'marginal', audit_support: bool = False) Tuple[ndarray, Dict] | Tuple[ndarray, Dict, List[str]]
Generates data for Partial Dependency Plots or Causal G-Computation.
- Parameters:
x (Union[np.ndarray, pd.DataFrame]) – Covariate matrix or DataFrame.
var_col (List[Union[int, str]], optional) – Covariate column to generate pdp values. Defaults to [].
values (List[Union[int, float]], optional) – Values to test on for each covariate. Defaults to [].
qt (List[float], optional) – Quantiles to generate values on if none are given. Defaults to [0.25, 0.5, 0.75].
sample_n (int, optional) – Sample size of large dataset. Useful for working with large datasets. Defaults to None.
method (str, optional) – ‘marginal’ for standard PDP, or ‘causal’ for support-audited G-Computation. Defaults to ‘marginal’.
audit_support (bool, optional) – If True, audits for positivity/support violations. Defaults to False.
- Returns:
PDP covariate matrix and tracking dictionary.
- Return type:
Union[Tuple[np.ndarray, Dict], Tuple[np.ndarray, Dict, List[str]]]
- bart_survival.surv_bart.get_posterior_test(y_time: ndarray, y_status: ndarray, x: ndarray, time_scale: float | None = None) Dict[str, ndarray]
Generates evaluation grid in long-time format for out-of-sample posterior predictions.
Constructs counterfactual cross-product of discrete evaluation times and subject covariates.
- Parameters:
y_time (np.ndarray) – Follow-up times defining the discrete time evaluation grid.
y_status (np.ndarray) – Event indicators (used for historical reference).
x (np.ndarray) – Baseline covariate matrix to evaluate.
time_scale (Optional[float], optional) – Time discretization scale. Defaults to None.
- Returns:
‘post_x’: Evaluated covariate matrix with time in column 0.
’coords’: Subject coordinate identifier array.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.get_shift_pdp(x: DataFrame | ndarray, primary_col: str | int, delta: float = 1.0, clip_to_range: bool = False) Tuple[ndarray, Dict[str, Any]]
Generates counterfactual datasets for a continuous shift intervention (Modified Treatment Policy).
Contrasts the natural course cohort (Arm 0: X) against a cohort where every individual’s continuous exposure is shifted by delta units (Arm 1: X + delta).
- Parameters:
x (Union[pd.DataFrame, np.ndarray]) – Baseline covariate matrix or DataFrame.
primary_col (Union[str, int]) – Continuous variable name or column index to shift.
delta (float, optional) – Increment added to primary_col. Defaults to 1.0.
clip_to_range (bool, optional) – Whether to clip shifted values to observed maximum. Defaults to False.
- Returns:
out_sk: Stacked counterfactual matrix of shape (2 * N, n_features).
c_idx: Index coordinate dictionary demarcating Arm 0 and Arm 1.
- Return type:
Tuple[np.ndarray, Dict[str, Any]]
- bart_survival.surv_bart.get_surv_pre_train(y_time: ndarray, y_status: ndarray, x: ndarray, weight: ndarray | None = None, time_scale: float | None = None) Dict[str, ndarray]
Generates pooled cross-sectional long-format dataset for discrete-time survival training.
Transforms right-censored time-to-event outcomes into person-time binary event observations. Each individual contributes records for discrete intervals $t = 1, 2, dots, T_i$.
- Parameters:
y_time (np.ndarray) – Array of observed follow-up times.
y_status (np.ndarray) – Binary event indicator (1 if event occurred, 0 if right-censored).
x (np.ndarray) – Baseline covariate matrix of shape (n_individuals, n_features).
weight (Optional[np.ndarray], optional) – Observation weights (e.g. for case-cohort designs). Defaults to 1.0.
time_scale (Optional[float], optional) – Time discretization scale (e.g. 5 for 5-day intervals). Defaults to None.
- Returns:
‘y’: Binary event indicator array of shape (n_person_time, 1).
’x’: Long-format covariate matrix where column 0 is discrete time, followed by covariates.
’w’: Observation weights aligned with person-time rows.
’coord’: Individual identifier integer array linking person-time rows to subjects.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.get_sv_mean_quant(sv: ndarray, msk: ndarray, draws: bool = True, qntile: List[float] = [0.025, 0.975]) Dict[str, ndarray]
Generates mean and quantile estimates of Survival Probabilities.
- Parameters:
sv (np.ndarray) – Survival probabilities of shape (n_draws, n_obs, n_times).
msk (np.ndarray) – Boolean mask selecting subpopulation of interest.
draws (bool, optional) – If True, aggregates across posterior draws. Defaults to True.
qntile (List[float], optional) – Credible interval quantiles. Defaults to [0.025, 0.975].
- Returns:
Mean and quantile curves for masked and unmasked groups.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.get_sv_prob(post: ndarray | DataArray | Dataset, coords: ndarray) Dict[str, ndarray]
Generates discrete-time hazard and cumulative survival probability estimates.
Computes S(t) = prod_{s=1}^t (1 - h(s)) across all posterior draws and subjects.
- Parameters:
post (Union[np.ndarray, xr.DataArray, xr.Dataset]) – Posterior predictive hazard draws.
coords (np.ndarray) – Subject coordinate indices to reshape predictions per subject and time.
- Returns:
‘prob’: Hazard probability array of shape (n_draws, n_subjects, n_time_points).
’sv’: Cumulative survival probability array of shape (n_draws, n_subjects, n_time_points).
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.pdp_diff_metric(pdp_val: Dict[str, ndarray], idx: int, qntile: List[float] = [0.025, 0.975]) Dict[str, ndarray]
Generates posterior estimate of marginal survival difference between counterfactual groups.
- Parameters:
pdp_val (Dict[str, np.ndarray]) – Posterior output dictionary containing ‘sv’.
idx (int) – Split index demarcating counterfactual groups in stacked PDP matrix.
qntile (List[float], optional) – Quantiles for credible interval. Defaults to [0.025, 0.975].
- Returns:
‘diff_m’: Posterior mean survival difference curve across time points.
’diff_q’: Posterior credible interval quantiles of the difference curve.
- Return type:
Dict[str, np.ndarray]
- bart_survival.surv_bart.pdp_hr_rd_metric(pdp_val: Dict[str, ndarray], idx: int, event_weights: ndarray | None = None, qntile: List[float] = [0.025, 0.975], eps: float = 1e-07) Dict[str, Any]
Computes event-weighted and unweighted Hazard Ratios and Risk Differences from counterfactual predictions.
Contrasts Intervention Arm 1 (obs >= idx) over Reference Arm 0 (obs < idx).
Calculates: - Event-weighted summary Hazard Ratio (default, Cox-aligned via complementary log-log link). - Unweighted summary Hazard Ratio across follow-up intervals. - Time-varying Hazard Ratio curve HR(t) via complementary log-log link. - Time-varying discrete risk ratio curve RR_discrete(t) = h1(t) / h0(t) (not averaged). - Time-varying Risk Difference curve RD(t) = Risk_1(t) - Risk_0(t) = S_0(t) - S_1(t) (1 over 0). - Survival Difference curve S_1(t) - S_0(t) = -RD(t). - Event-weighted and unweighted summary Risk Differences. - Final horizon Risk Difference RD(t_end). - Restricted Mean Survival Time (RMST) difference.
- Parameters:
pdp_val (Dict[str, np.ndarray]) – Dictionary containing ‘prob’ (hazards) and ‘sv’ (survival curves). Arrays have shape (n_draws, 2 * N, n_times).
idx (int) – Split index demarcating Reference Arm 0 (:idx) and Intervention Arm 1 (idx:).
event_weights (Optional[np.ndarray], optional) – Normalized event weights per interval. If None, defaults to uniform interval weighting.
qntile (List[float], optional) – Credible interval quantiles. Defaults to [0.025, 0.975].
eps (float, optional) – Epsilon threshold for numerical safety. Defaults to 1e-7.
- Returns:
Comprehensive dictionary containing summary statistics, credible intervals, and draw arrays.
- Return type:
Dict[str, Any]
- bart_survival.surv_bart.pdp_rr_metric(pdp_val: Dict[str, ndarray], idx: int, qntile: List[float] = [0.025, 0.975]) Dict[str, ndarray]
Generates posterior Hazard Ratio / Risk Ratio between counterfactual intervention groups.
- Parameters:
pdp_val (Dict[str, np.ndarray]) – Posterior output dictionary containing ‘prob’.
idx (int) – Split index demarcating counterfactual groups in stacked PDP matrix.
qntile (List[float], optional) – Quantiles for credible interval. Defaults to [0.025, 0.975].
- Returns:
‘rr_m’: Posterior mean hazard ratio curve across time points.
’rr_q’: Posterior credible interval quantiles of the hazard ratio curve.
- Return type:
Dict[str, np.ndarray]