RegressionDiscontinuity#
- class causalpy.experiments.regression_discontinuity.RegressionDiscontinuity[source]#
A class to analyse sharp regression discontinuity experiments.
- Parameters:
data (
DataFrame) – A pandas dataframe.formula (
str) – A statistical model formula.treatment_threshold (
float) – A scalar threshold value at which the treatment is applied.model (
PyMCModel|RegressorMixin|None) – A PyMC or sklearn model. Defaults toLinearRegression.running_variable_name (
str) – The name of the predictor variable that the treatment threshold is based upon.epsilon (
float) – A small scalar value which determines how far above and below the treatment threshold to evaluate the causal impact.bandwidth (
float) – Data outside of the bandwidth (relative to the discontinuity) is not used to fit the model.donut_hole (
float) – Observations within this distance from the treatment threshold are excluded from model fitting. Used as a robustness check when observations closest to the threshold may be problematic (e.g., due to manipulation or heaping). Must be non-negative and less thanbandwidthifbandwidthis finite.**kwargs (
Any) – Additional keyword arguments forwarded toBaseExperiment.
Notes
Estimate extraction
After fitting the regression on the selected bandwidth, the class predicts the conditional expectation immediately below the threshold with
treated=0and immediately above it withtreated=1.discontinuity_at_thresholdis the upper prediction minus the lower prediction, evaluated atthreshold ± epsilon. This is a local prediction contrast, not a population-standardized effect.Examples
>>> import causalpy as cp >>> df = cp.load_data("rd") >>> seed = 42 >>> result = cp.RegressionDiscontinuity( ... df, ... formula="y ~ 1 + x + treated + x:treated", ... model=cp.pymc_models.LinearRegression( ... sample_kwargs={ ... "draws": 100, ... "target_accept": 0.95, ... "random_seed": seed, ... "progressbar": False, ... }, ... ), ... treatment_threshold=0.5, ... )
Methods
Run the experiment algorithm: fit model, predict, and calculate discontinuity.
RegressionDiscontinuity.effect_summary(*[, ...])Generate a decision-ready summary of causal effects for Regression Discontinuity.
RegressionDiscontinuity.fit(*args, **kwargs)Fit the underlying model.
RegressionDiscontinuity.generate_report(*[, ...])Generate a self-contained HTML report for this experiment.
RegressionDiscontinuity.get_plot_data(*args, ...)Recover the data of an experiment along with the prediction and causal impact information.
Validate the input data and model formula for correctness.
RegressionDiscontinuity.plot(*[, round_to, ...])Plot the regression discontinuity results.
Ask the model to print its coefficients.
Set optional maketables rendering options for this experiment.
RegressionDiscontinuity.summary([round_to])Print summary of main results and model coefficients.
Attributes
idataReturn fitted InferenceData when the model backend supports it.
supports_bayessupports_olssupports_pymc_forecastlabelsdata- __init__(data, formula, treatment_threshold, model=None, running_variable_name='x', epsilon=0.001, bandwidth=inf, donut_hole=0.0, **kwargs)[source]#
- classmethod __new__(*args, **kwargs)#