はじめに
効果検証入門 ~正しい比較のための因果推論/計量経済学の基礎内のソースコードをPythonで再現します。
既に素晴らしい先人の実装例がありますが、自分の勉強用のメモとして残しておきます。
この記事では、4・5章について記載します。
コードは、githubにも掲載しています。
なお、変数名や処理内容は、基本的に書籍内に寄せて実装します。
CausalImpact
ここでは、pycausalimpactを使って実装する。
R版と結果が一致しないが、これはREADMEに書いてある通りで、扱っている手法が異なるからみたい。
引数のmodel
で状態空間モデルを指定することができるようだが、R版と実装を合わせるのは骨が折れそうなので断念。
CausalImpact
from causalimpact import CausalImpact
impact = CausalImpact(CI_data, pre_period, post_period, prior_level_sd=None)
impact.plot()
print(impact.summary())
RDD
非線形回帰分析は、以下のようなモデルを学習し、介入変数の効果量を参照すれば良い
$$ Y = \beta_0 + \beta_1 f_1(X-c) + \beta_2 f_2(X-c) + \rho Z + \epsilon $$
RDD
from sklearn.preprocessing import PolynomialFeatures
degree = 4
X = nonlinear_rdd_data[['history_log']]
X = X - cutpoint
X_poly = PolynomialFeatures(degree=degree, include_bias=False).fit_transform(X)
X_poly = pd.DataFrame(X_poly, columns=[f'X{i+1}' for i in range(X_poly.shape[1])])
nonlinear_rdd_data = pd.concat([nonlinear_rdd_data, X_poly], axis=1)
nonlinear_rdd_ord4 = ols('visit ~ treatment + X1 + X2 + X3 + X4 + treatment:X1 + treatment:X2 + treatment:X3 + treatment:X4', data=nonlinear_rdd_data).fit()