causalis.scenarios.multi_unconfoundedness.model¶
Module Contents¶
Classes¶
Interactive Regression Model for multi-treatment unconfoundedness. |
API¶
- class causalis.scenarios.multi_unconfoundedness.model.MultiTreatmentIRM(data: Optional[causalis.data_contracts.multicausaldata.MultiCausalData] = None, ml_g: Any = None, ml_m: Any = None, *, n_folds: int = 5, n_rep: int = 1, normalize_ipw: bool = False, trimming_rule: str = 'truncate', trimming_threshold: float = 0.01, random_state: Optional[int] = None, n_jobs: int = 1)¶
Bases:
sklearn.base.BaseEstimatorInteractive Regression Model for multi-treatment unconfoundedness.
DoubleML-style cross-fitting estimator consuming
MultiCausalDataand producing pairwise ATE contrasts against baseline treatment (column 0). Model supports >= 2 treatments.Parameters ---------- data : MultiCausalData Data container with outcome, one-hot multi-treatment indicators, and confounders. ml_g : estimator Learner for E[Y|X,D]. If classifier and Y is binary, predict_proba is used; otherwise predict(). ml_m : classifier Learner for E[D|X] (generelized propensity score). Must support predict_proba() or predict() in (0,1). n_folds : int, default 5 Number of cross-fitting folds. n_rep : int, default 1 Number of repetitions of sample splitting. Currently only 1 is supported. normalize_ipw : bool, default False Whether to normalize IPW terms within the score. This is a Hajek-style stabilization: it can reduce variance but may add small finite-sample bias. trimming_rule : {"truncate"}, default "truncate" Trimming approach for propensity scores. trimming_threshold : float, default 1e-2 Threshold for trimming if rule is "truncate". random_state : Optional[int], default None Random seed for fold creation. n_jobs : int, default 1 Number of parallel jobs for fold-level cross-fitting. Use `-1` to use all available CPUs. Practical guidance: - Start with `n_jobs=1` for stable, low-contention defaults. - Increase to `n_jobs=2/4/-1` when cross-fitting is the bottleneck. - If nuisance learners are already multithreaded (e.g. CatBoost with `thread_count=-1`), keep `n_jobs=1` or set learner threads to `1` to avoid CPU oversubscription.Initialization
- fit(data: Optional[causalis.data_contracts.multicausaldata.MultiCausalData] = None) causalis.scenarios.multi_unconfoundedness.model.MultiTreatmentIRM¶
- estimate(score: str = 'ATE', alpha: float = 0.05, diagnostic_data: bool = True) causalis.data_contracts.multicausal_estimate.MultiCausalEstimate¶
- property diagnostics_: Dict[str, Any]¶
Return diagnostic data.
Returns
dict Dictionary containing ‘m_hat’, ‘g_hat’ and ‘folds’.
- property coef: numpy.ndarray¶
Return the estimated coefficient.
Returns
np.ndarray The estimated coefficient.
- property se: numpy.ndarray¶
Return the standard error of the estimate.
Returns
np.ndarray The standard error.
- property pvalues: numpy.ndarray¶
Return the p-values for the estimate.
Returns
np.ndarray The p-values.
- property summary: pandas.DataFrame¶
Return a summary DataFrame of the results.
Returns
pd.DataFrame The results summary.
- property orth_signal: numpy.ndarray¶
Return the cross-fitted orthogonal signal (psi_b).
Returns
np.ndarray The orthogonal signal.
- sensitivity_analysis(cf_y: Optional[float] = None, r2_d: Any = 0.0, rho: Any = 1.0, H0: float = 0.0, alpha: float = 0.05, *, r2_y: Optional[float] = None) causalis.scenarios.multi_unconfoundedness.model.MultiTreatmentIRM¶
- confint() pandas.DataFrame¶