causalkit.refutation.sensitivity_analysis#
- causalkit.refutation.sensitivity_analysis(effect_estimation, cf_y, cf_d, rho=1.0, level=0.95)[source]#
Perform sensitivity analysis on a causal effect estimate.
This function takes a DoubleML effect estimation result and performs sensitivity analysis to assess robustness to unobserved confounding.
- Parameters:
effect_estimation (Dict[str, Any]) – A dictionary containing the effect estimation results, must include: - ‘model’: A fitted DoubleML model object (e.g., DoubleMLIRM) - Other keys like ‘coefficient’, ‘std_error’, ‘p_value’, etc.
cf_y (float) – Sensitivity parameter for the outcome equation (confounding strength)
cf_d (float) – Sensitivity parameter for the treatment equation (confounding strength)
rho (float, default 1.0) – Correlation parameter between unobserved confounders
level (float, default 0.95) – Confidence level for the sensitivity analysis
- Returns:
A formatted sensitivity analysis summary report
- Return type:
- Raises:
ValueError – If the effect_estimation does not contain a ‘model’ key or if the model does not support sensitivity analysis
KeyError – If required keys are missing from the effect_estimation dictionary
TypeError – If the model is not a DoubleML object that supports sensitivity analysis
Examples
>>> from causalkit.data import generate_rct_data, CausalData >>> from causalkit.inference.ate import dml_ate >>> from causalkit.refutation.sensitivity import sensitivity_analysis >>> >>> # Generate data and estimate effect >>> df = generate_rct_data() >>> ck = CausalData(df=df, outcome='outcome', treatment='treatment', ... confounders=['age', 'invited_friend']) >>> results = dml_ate(ck) >>> >>> # Perform sensitivity analysis >>> sensitivity_report = sensitivity_analysis(results, cf_y=0.04, cf_d=0.03) >>> print(sensitivity_report)