因果推論の構造化 実践編
このページの目的
前回は因果推論の構造化を試みました。今回は実際のデータに適用する際にどのようになるかを確かめてみたいと思います。 コード全文はこちらに上げておきます。
データの準備
今回のデータは効果検証入門で紹介されていたこちらを使います。*1このデータで興味のあることは、「広告メールを打つことによりその顧客の購入額が増加するか」という因果です。 まずは、カラムの確認をします。
カラム名 | 説明 |
---|---|
recency | 最後の購入からの経過日数 |
history_segment | 昨年の購入額の階層 |
history | 昨年の購入額 |
women | 顧客が女性か |
zipcode | zipcodeをもとに地区を分類したもの |
newbie | 過去12か月以内に新しく追加されたユーザーか |
channel | 昨年においてどのチャネルから購入したか |
visit | メールが配信されてから2週間以内にサイトへ来訪したか |
conversion | メールが配信されてから2週間以内に購入したか |
spend | 購入した際の購入額 |
treatment | メールを配信したか |
では、このデータの背景にある因果ダイアグラムから考えていきましょう。なお、このデータはRCTデータを加工して非データを作成しているので、推定した因果効果がどれだけ真の因果効果と近かったかを測ることができます。
因果ダイアグラムの構築
専門家の知識による構築
この方法は人間の頭で考えて因果ダイアグラムを構築します。本来なら、広告マーケティングの知識を背景に変数間の因果関係を考えていかなければなりません。しかし、今回はデータが生成された過程(真の生成過程)を知っているのでそれを因果ダイアグラムに反映します。今回のメール配信戦略はrecency・channel ・history に基づいて優良顧客を判断しています。詳しくは冒頭で紹介した本をご覧ください。*2
因果効果の推定
前回紹介した傾向スコアマッチングを用いて因果効果を推定します。[dowhy]https://github.com/microsoft/dowhy)を用いると、フレームワークの力で簡潔なコードにできます!基本的にはdowhyのチュートリアルに沿って動かしているのでぜひそちらをご覧ください。
推定の部分だけ転載すると、
causal_estimate = model.estimate_effect(identified_estimand, method_name="backdoor.propensity_score_weighting", target_units = "ate", method_params={"weighting_scheme":"ips_weight"}) print(causal_estimate) print("Causal Estimate is " + str(causal_estimate.value)) INFO:dowhy.causal_estimator:INFO: Using Propensity Score Weighting Estimator INFO:dowhy.causal_estimator:b: spend~treatment+channel+history *** Causal Estimate *** ## Identified estimand Estimand type: nonparametric-ate ### Estimand : 1 Estimand name: backdoor Estimand expression: d ────────────(Expectation(spend|channel,history)) d[treatment] Estimand assumption 1, Unconfoundedness: If U→{treatment} and U→spend then P(spend|treatment,channel,history,U) = P(spend|treatment,channel,history) ### Estimand : 2 Estimand name: iv No such variable found! ## Realized estimand b: spend~treatment+channel+history Target units: ate ## Estimate Mean value: 0.8234131441089386 Causal Estimate is 0.8234131441089386
となり約0.823の因果効果があると推定されました。真の効果は0.77でした。
まとめ
因果ダイアグラムを構築して、因果効果を推定する方法を紹介しました。次のステップとしては、この分析の評価を行いどれほど信頼できるかを考えていきたいと思います。