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:

str

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)