Discoveryのmatsu-ryuです。「事例と実装で学ぶ因果推論〜ダイエットアプリの効果を検証するには?」シリーズ2回目の記事になります。1回目は、仮想のダイエットアプリの疑似データを生成し、「アプリ利用者」と「アプリ比較利用者」の1年後の体重増減を比較した場合の問題点について述べました。https://zenn.dev/matsu_ryu/articles/c4c5f804fbae8d第2回は、この問題点に対応するための「ポテンシャルアウトカムフレームワーク」について解説していきます。「アプリ利用した場合の体重増減」ー「アプリ利用しない場合の体重増減」が算出でき、個人レベルのアプリ利用効果が測定できます。「アプリ利用した場合の体重増減」ー「アプリ利用しない場合の体重増減」で算出することは、できません。集団レベルで「アプリ利用した場合の体重増減」ー「アプリ利用しない場合の体重増減」は、算出可能ですが、前回解説したとおり、アプリ利用者はもともと体重が減りやすい集団なので、単純比較することはできません。したらよいでしょうか?RCTによる検証1つめのアプローチは、アプリ利用をランダムに割り当てることです。Trial)と言います。(Webサイト改善でよく行われているABテストも同様の考え方です。)の分布をそろえることができます。このように生成されたデータを実験データと言います。「アプリ利用した場合の体重増減」(-0.99)ー「アプリ利用しない場合の体重増減」(0.99)=-1.98となり、真の効果の「-2」に近い値が推定できています。ダイエットアプリの運用において、利用者をランダムに割り当てることは、現実的ではありません。いうモチベーションが出てきます。このような検証を観察データにおける因果推論と言います。ヘルスケア業界でよく語られるリアルワールドデータ(RWD)も観察データに分類されます。「AさんてBさんにの属性ってほぼほぼ、一緒だから、Aさんのアプリ非利用時の体重増減ってBさんの結果に置き換えて考えられないかな?」というお気持ちです。同じように「CさんとDさんは似てるから、未観測の体重増減を置き換えられないかな?」のような感じで考えます。(似ている人の結果を交換して利用できないかな?)では、改めて数式を導入して状況を整理していきましょう。個人レベルで考える本当に知りたいのは、個人のアプリ利用した場合の体重増減と、アプリ利用しない場合の体重増減です。outcom_{treatment=0}と表記します。Aさんの場合は、アプリ利用していて、非利用時のoutcom_{treat=0}は観測できません。現実世界において、この値は、算出することはできません。※outcom_{treat=1}、outcom_{treat=0}のことをポテンシャルアウトカム(潜在的結果変数)と言います。(outcomは実際に観測した変数)集団レベルで考える。個人レベルでのアプリの利用効果は算出できないので、集団レベルでの平均効果を考えます。0}]が算出できないか?を考えます。この数式の意味合いは全員がアプリを利用した場合-全員がアプリを利用しなかった場合の平均的なアプリの利用効果です。1}が観測できないので算出できません。0}]を算出する方法は、ないものか?を考えていくことになります。(交換可能性を検討する。)ここで、このセクションの冒頭で述べた「Aさんのアプリ非利用時の体重増減ってBさんの結果に置き換えて考えられないかな?」の考えがヒントになってきます。背景因子が同じで、唯一異なるのは、アプリ利用有無というような状況です。以降、age,gender,weight,dietはまとめて「L」と表現します。0}|L]となります。1}|L]ですが、観測データからは算出できない。E[outcom|treatment=1,L]に置き換え可能となります。treat=0,L]となり、求めたい真の集団にける、ダイエットアプリの効果が算出可能となりました。ここからは、その3つの前提条件について、見ていきましょう。:Exchangebility正値性:Positivity一貫性:Consistency上記3条件をまとめて、識別可能性(Identifiavility)といいます。0交換可能性:Exchangebility数式で表現するとE[outcom_{treatment=0}|treatment=1,L]=E[outcom|treatment=0,L]となります。疑似データの例でいうと、Aさんがアプリ利用しない場合のポテンシャルアウトカムの体重増減(outcom_0)は、Bさんをはじめとする、Lの条件が同一な人の観測値の体重増減(outcom)で交換可能だよね。ちなみに、RCTの場合は、アプリ利用群とアプリ非利用群において、Lの分布が調整されるためE[outcom_{treatment=0}|treatment=1]=E[outcom|treatment=0]となります。(※Lによる条件付は不要)なので、Lを条件づけせずに群間で単純比較しても問題にならなかったのです。正値性:Positivity数式で表現すると0<P(treatment=0|L)<10<P(treatment=1|L)<1となります。疑似データの例でいうと、アプリ利用しているAさんがアプリ利用しない場合の体重増減(outcom_0)を推定しようとしたとき、アプリ利用無しの集団にAさん同様のLを保持している人が1人以上は必要、ということを言っています。集団の平均的な効果で推定しようとしたときに、同様のLを持った集団が、アプリ利用有りの集団にしかいない場合、アプリ利用無しのポテンシャルアウトカムが推定できない状況になってしまいます。このような状況では、因果推論することは不可能です。一貫性:Consistency数式で表現するとE[outcom_{treatment=1}|treatment=1,L]=E[outcom|treatment=1,L]となります。疑似データの例に言葉で説明すると、アプリ利用しているAさんの観測された体重増減(outcom)とポテンシャルアウトカム(outcom_1)は常に一致する。いうことを言っています。当たり前のことを行っているようで、分かりづらいですね。可能な限り、簡潔に説明すると、アプリ利用有りの場合は、体重増減の効果は一定ということを条件づけています。実際にありそうシチュエーションとしては、アプリ利用有りでも毎日利用している人もいれば、月に1回しか利用していない人もいます。この場合、ポテンシャルアウトカムの体重増減は一意に定まらない可能性があります。意味のある効果検証を行うためには、ポテンシャルアウトカムが一定に推定できるように、介入変数(アプリ利用)の定義を、しっかり行う必要があるということです。ダイエットアプリの例で言えば、アプリ利用の有無ではなく、利用頻度等で定義づける必要があるかもしれません。詳細は、krskさんの記事https://www.krsk-phs.com/entry/consistencyが参考になります。DAGと交絡因子Exchangebility(交換可能性)が必要な条件ということを述べてきましたが、これがどのような状態のときに成立するでしょうか?今シリーズで生成されている疑似データについて、変数の関係をダイアグラムで図示してみましょう。(これをDAGといいます。L((性別,年代,体重,食習慣))がT((アプリ利用))にも、Y((体重増減))にも影響を及ぼしていることです。このような変数を、交絡因子とい言います。Lを条件づければ、T((アプリ利用))の有無の違いによる、ピュアなY((体重増減))を評価できるようになります。(アプリ利用集団と非利用集団のポテンシャルアウトカムが交換可能になる。)正しく条件づければ、下記のDAGのイメージのように、Lの影響を排除して、TによるYの効果が測定できます。交換可能性を成立させるために必要なことは、DAGを記述して条件づけするための因子を特定することです。疑似データにおいては、背後のデータ生成のモデルがわかっているため、交絡因子の特定が可能です。実務においては、基本的には、システマティックにDAG(モデル)を求めることはできません。私の経験上でいえば、DAGの定義は、扱うドメイン知識の有識者と相談しながら決めていきました。前職においても、ヘルスケアアプリの効果検証の結果を学会発表したり、論文化したりすることがありましたが、その際は、医師に監修をしてもらっていまいした。観察データによる、因果推論を行うためのポテンシャルアウトカムフレームワークについて説明してきました。必要な前提条件が3つあり、この3つの条件(Exchangebility、Positivity、Consistency)が成立して、初めて因果推論が可能になります。疑似データにおいては、背景のモデルを自分で定義しているので、この3条件は成立していることはわかっています。次回は疑似データにおいて、交絡因子を調整して、ダイエットアプリの効果を推定する1つ目の方法として「回帰分析」を取り上げます。Discoveryは、「テクノロジーで適切な医療に導く」ことをミッションとしています。このミッションをデータドリブンで実現することを目指しています。そのためには、データアナリスト、アナリティクスエンジニア、データエンジニアの力が必要です。そこで、私たちは一緒に働く仲間を募集しています!興味のある方は下記JDから直接応募していただいても良いですし、一度カジュアルにお話したい方はそれぞれのメンバーと話せるカジュアル面談ページがあるのでぜひお気軽にご連絡ください。https://recruit.ubie.life/jd_dev/eng_analyticshttps://recruit.ubie.life/jd_dev/eng_datahttps://recruit.ubie.life/jd_dev/eng_dataanalysthttps://youtrust.jp/recruitment_posts/66409c1aa5e042b45e1e581b6357dcd9https://youtrust.jp/recruitment_posts/c19393ba65b2921c764e35a760269869最近soの制度もupdateされました。魅力的なsoに生まれ変わってます!https://prtimes.jp/main/html/rd/p/000000051.000048083.htmlmatsu-ryumatsu-ryu@ubie-discoveryです。メガネと野球とお酒が好きです。テックブログPublicationUbie株式会社のテックブログです。採用情報:recruit.ubie.life/engineerDiscussionmatsu-ryumatsu-ryu@ubie-discoveryです。メガネと野球とお酒が好きです。前回のおさらいRCTによる検証ポテンシャルアウトカムフレームワークによる因果推論〜観察データの効果検証の考え方〜個人レベルで考える集団レベルで考える。(交換可能性を検討する。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。