You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: causalpy/pymc_experiments.py
+176Lines changed: 176 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -957,6 +957,182 @@ def summary(self) -> None:
957
957
self.print_coefficients()
958
958
959
959
960
+
classRegressionKink(ExperimentalDesign):
961
+
def__init__(
962
+
self,
963
+
data: pd.DataFrame,
964
+
formula: str,
965
+
kink_point: float,
966
+
model=None,
967
+
running_variable_name: str="x",
968
+
epsilon: float=0.001,
969
+
bandwidth: Optional[float] =None,
970
+
**kwargs,
971
+
):
972
+
super().__init__(model=model, **kwargs)
973
+
self.expt_type="Regression Discontinuity"
974
+
self.data=data
975
+
self.formula=formula
976
+
self.running_variable_name=running_variable_name
977
+
self.kink_point=kink_point
978
+
self.epsilon=epsilon
979
+
self.bandwidth=bandwidth
980
+
self._input_validation()
981
+
982
+
ifself.bandwidthisnotNone:
983
+
fmin=self.kink_point-self.bandwidth
984
+
fmax=self.kink_point+self.bandwidth
985
+
filtered_data=self.data.query(f"{fmin} <= x <= {fmax}")
986
+
iflen(filtered_data) <=10:
987
+
warnings.warn(
988
+
f"Choice of bandwidth parameter has lead to only {len(filtered_data)} remaining datapoints. Consider increasing the bandwidth parameter.", # noqa: E501
0 commit comments