0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

効果検証入門 4・5章をPythonで書く

Posted at

はじめに

効果検証入門 ~正しい比較のための因果推論/計量経済学の基礎内のソースコードを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()

関連

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?