動画概要

因果推論の第4弾までは、EconMLを使うための外堀を埋めるための基礎的事項を取り上げてきました。第5弾となる本動画からは、EconMLの実際の活用を念頭に、その推論時のメソッドであるeffectメソッドやmarginal_effectメソッドについて解説します。また動画後半では2020年4月にリリースされたPyCaretを機械学習ベースの因果推論業務のどの時点でどのような温度感で使えそうかについてもコメントしました。

参照

・EconML Problem Setup and API Design
https://econml.azurewebsites.net/spec/api.html

・WhyNot Opioid RCT data generator
https://github.com/zykls/whynot/blob/master/examples/causal_inference/heterogeneous_treatment_effects.ipynb

・PyCaret
https://pycaret.org/

利用コード

利用ライブラリのインポート。whynotはデータ生成用途としてのみここでは使います。

import pandas as pd
import numpy as np

import econml
import whynot as wn

from IPython.display import Image, display
import warnings
warnings.filterwarnings('ignore')

from pycaret.regression import *

numpy配列をpandasのデータフレームにしてリターンするだけの関数です。

def get_ncols(dataset):
    try:
        return dataset.shape[1]
    except:
        return 1

def get_df(dataset, Cap):
    return pd.DataFrame(dataset, columns=[Cap+str(i) for i in range(get_ncols(dataset))])

オピオイドのRCTデータを生成しています。各行処置変数(T)、交絡因子(X)、アウトカム変数(Y)、シミューレション上の実効果(true effect:処置なしから処置ありに変化させたときの効果)が生成されます。

n_sample = 5000
experiment = wn.opioid.RCT
data = experiment.run(num_samples=n_sample)

Y = data.outcomes     # continuous
T = data.treatments   # binary
X = data.covariates   # continuous
E = data.true_effects # individual treatment effect (true effect)

Y_, T_, X_ = get_df(Y,'Y'), get_df(T,'T'), get_df(X,'X')
Dataset = Y_.join(T_).join(X_)

print(Y_.shape, T_.shape, X_.shape)
display(Dataset.head())

EconMLのDML(Double Machine Learning)ベースのCATE推定器をセットします。簡単化のためDMLに限定し、処置変数とアウトカム変数の推定もツリー系とリニア系の2種類にしています。

You must be logged in to view this content.
コメントは利用できません。