causalis.scenarios.unconfoundedness.refutation.score.influence_plot¶
Lightweight plots for the most influential score contributions.
Module Contents¶
Functions¶
Plot only the most influential score contributions. |
Data¶
API¶
- causalis.scenarios.unconfoundedness.refutation.score.influence_plot.plot_influence_instability(estimate: causalis.data_contracts.causal_estimate.CausalEstimate, data: Optional[causalis.dgp.causaldata.CausalData] = None, *, trimming_threshold: Optional[float] = None, use_estimator_psi: bool = True, top_k: int = 20, annotate: bool = True, figsize: Optional[Tuple[float, float]] = None, dpi: int = 220, font_scale: float = 1.1, save: Optional[str] = None, save_dpi: Optional[int] = None, transparent: bool = False) matplotlib.pyplot.Figure¶
Plot only the most influential score contributions.
Panels
Ranked bar chart of the top
kobservations by|psi_i|.Scatter of those top
kobservations versus clipped propensitym_i.
This replacement intentionally avoids plotting every observation. Use
run_score_diagnostics(... )["summary"]for global tail metrics and this plot for a lightweight drill-down into the largest contributors.Notes
The figure ranks observations by :math:
|\hat\psi_i|, where :math:\hat\psi_iis the fitted score contribution. Large values indicate observations with unusually strong leverage on the final estimate. If many top points sit near propensity clipping boundaries, that is usually a sign to inspect overlap and nuisance fit quality together.Examples
from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor from causalis.dgp import obs_linear_26_dataset from causalis.scenarios.unconfoundedness.model import IRM data = obs_linear_26_dataset( … n=1000, … seed=3141, … include_oracle=False, … return_causal_data=True, … ) irm = IRM( … data=data, … ml_g=RandomForestRegressor( … n_estimators=200, … max_depth=6, … min_samples_leaf=5, … random_state=3141, … ), … ml_m=RandomForestClassifier( … n_estimators=200, … max_depth=6, … min_samples_leaf=5, … random_state=3141, … ), … n_folds=3, … random_state=3141, … ) estimate = irm.fit().estimate(score=”ATE”) fig = plot_influence_instability(estimate, data=data, top_k=15) # doctest: +SKIP
- causalis.scenarios.unconfoundedness.refutation.score.influence_plot.__all__¶
[‘plot_influence_instability’]