causal-inference について
causal-inferenceは、観測データが因果関係の主張を裏付けるか検討する推論スキルです。データやプロダクトのチームが反実仮想、交絡要因、研究デザイン、結論への脅威を確認できます。
主な機能
- 01反実仮想と交絡要因の分析
- 02媒介変数とコライダーを含む因果グラフ
- 03RCT、差分の差分、自然実験の指針
- 04A/Bテストの妥当性チェックリスト
- 05証拠と結論の構造化フォーマット
活用シーン
- 01プロダクト変更が指標変化を引き起こしたか評価
- 02A/Bテストのバイアスや設計上の問題を確認
- 03ランダム化できない場合に処置群と対照群の傾向を比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ andurilcode/ craftwork --skill causal-inferenceインストール後、Claude Code で/causal-inferenceを入力して読み込まれたか確認します。
詳細
因果推論
基本原則:相関関係は因果関係ではありません。ただし、因果関係である場合もあり、その見極めは非常に重要です。データに基づいて行動する前に、反実仮想、交絡因子、因果構造を用いて、「X は実際に Y を引き起こしたのか?」を厳密に問いましょう。
基本的な違い
相関:X と Y が一緒に変化します。 因果関係:X を変えると Y が変化し、その理由も分かっています。
重要な理由:
- 因果経路のない相関関係に介入しても、労力が無駄になります
- 交絡因子を見落とすと、誤った原因に効果を帰属させてしまいます
- 偶然の相関に基づいて行動すると、状況が悪化する可能性があります
重要な概念
反実仮想による推論
根本的な問い:
「他の条件がすべて同じだとして、X が異なっていたら、Y はどうなっていたでしょうか?」
同じ単位について、処置を受けた状態と受けていない状態の両方を同時に観察することはできません。これが因果推論の根本問題です。すべての因果関係の主張には暗黙のうちに反実仮想が含まれています。明示的に扱いましょう。
交絡因子
X と Y の両方に因果的に影響し、直接の因果経路がないにもかかわらず両者の間に相関を生み出す第三の変数 Z です。
Z → X
Z → Y
X と Y は相関していますが、X は Y の原因ではありません。X に介入しても何も変わりません。
例:アイスクリームの売上と溺水事故の発生率には相関があります。交絡因子は暑い天候です。暑い天候 → アイスクリームの売上増加、そして暑い天候 → 水泳の増加 → 溺水事故の増加、という関係があります。アイスクリームを禁止しても、溺水事故は減りません。
プロダクト/エンジニアリング業務でよくある交絡因子:
- 季節性(機能の利用率とエンゲージメントが一緒に変化する)
- 選択バイアス(機能を利用するユーザーは、もともとエンゲージメントが高い)
- 外部イベント(リリースした週に競合他社がサービスを終了した)
- 時間的トレンド(介入前から両方の指標が変化していた)
媒介変数と交絡因子
媒介変数は因果経路上にあります — X → M → Y。これを遮断すると、効果も遮断されます。 交絡因子は両方の上流にあります — これを調整します。
両者を混同すると、過剰な補正につながります(媒介変数を調整すると、調べたい効果が取り除かれます)。
シンプソンのパラドックス
データを集計すると、観察された傾向が逆転することがあります。グループの規模に偏りがあるため、集計では有害に見える処置が、すべてのサブグループでは有益に見える場合があります(またはその逆もあります)。
必ず確認しましょう:データを分解すると、結論は変わりますか?
因果関係を明らかにする手法
ランダム化比較試験(ゴールドスタンダード)
無作為割り当てにより、処置が他のすべての変数から独立するため、交絡が排除されます。
プロダクト業務では:A/B テストはランダム化比較試験です。有効性は以下に依存します:
- 無作為割り当て(自己選択ではない)
- 十分なサンプルサイズ(統計的検出力)
- 単一の処置変更(同時に変更を加えない)
- 単位間の干渉がないこと(SUTVA)
- 指標を適切に選定すること
A/B テストの失敗要因:
- 新奇性効果:ユーザーが慣れるにつれて、初期の効果が薄れる
- サンプル比率の不一致:グループの規模が不均等で、無作為化の失敗を示している
- 多重比較:20 個の指標を調べると、p=0.05 では偶然に偽陽性が 1 つ発生する
- 途中確認:結果が良く見えた時点で早期に終了すると、偽陽性率が上昇する
差の差分法(DiD)
処置群と対照群の時間経過に伴う変化を比較します。
Effect = (Treated_after - Treated_before) - (Control_after - Control_before)
前提:処置がなければ、両群は平行なトレンドをたどっていたはずです。 使用する状況:介入前後のデータと自然な対照群があるものの、無作為割り当てができなかった場合。
自然実験
外部要因によって、準ランダムな処置のばらつきが生じます。政策変更、地理的境界、システム障害、コホートごとの段階的ロールアウトなどが該当します。
例:登録日によって機能を段階的にロールアウトする場合、タイミングに自己選択がなければ、早期ユーザーが処置群、後期ユーザーが対照群になります。
因果グラフ(DAG)
すべての変数とその因果関係を図示します。交絡因子と媒介変数を明示し、何を調整すべきかを判断できます。
[Confounder Z] → [Treatment X] → [Mediator M] → [Outcome Y]
↓___________________________________↑
DAG の読み方:Z(交絡因子)は調整し、M(媒介変数)は調整しません。
出力形式
🔍 検証対象の因果関係の主張
- 明示された主張:[何が何を引き起こすと主張されているか]
- 反実仮想として再定式化:「他の条件がすべて同じ場合、Xが起きていなかったらYは違っていたでしょうか?」
🕸️ 因果構造
因果グラフを描いてください:
- 想定される因果経路はありますか?
- 潜在的な交絡因子はありますか?
- 媒介変数(因果経路上にあるもの)はありますか?
- コライダー(XとYの両方によって生じ、これを調整すると見せかけの経路が開くもの)はありますか?
⚠️ 因果的解釈を脅かす要因
それぞれについて:該当する/可能性がある/可能性が低い
| 脅威 | 該当する? | 根拠 | 結論への影響 |
|---|---|---|---|
| 交絡 | |||
| 選択バイアス | |||
| 逆因果(Y → X) | |||
| 共通原因(Z → X、Z → Y) | |||
| 季節性/時間トレンド | |||
| 偶然のタイミング | |||
| シンプソンのパラドックス |
📊 エビデンスの質
- 使用したデザイン:[RCT/DiD/自然実験/観察研究]
- エビデンスの強さ:[強/中/弱]
- 主な仮定:[デザインが妥当であるために成立している必要があること]
- 仮定への違反:[仮定が成立していない兆候があるか]
🎯 結論
- 因果関係の主張は妥当ですか?:[はい/おそらく/不明/いいえ]
- はいの場合:推定効果量と確信度
- 不明の場合:どのようなエビデンスがあれば判断できますか?
- いいえの場合:データにより適合する別の説明は何ですか?
🔬 次のステップ
- 因果関係を最も効率よく立証できる実験は何ですか?
- データにあるどのような自然な変動を活用できますか?
- どの交絡因子を測定し、調整すべきですか?
A/B テストの因果推論チェックリスト
結果を信頼する前に、以下を確認してください:
- 割り当ては本当にランダムでしたか?サンプル比率の不一致を確認してください。
- 変更したのは1つの要素だけですか?
- 期待される効果を検出するのに十分なサンプルサイズですか?
- テストは1週間のサイクルを一巡する期間、実施されましたか?
- 主要指標は事前に指定されていますか?
- 動くはずの副次指標は、実際に動いていますか?
- XがYを引き起こす理由を説明する、妥当なメカニズムはありますか?
- 効果はセグメント間で一貫していますか?(シンプソンのパラドックスを確認してください)
思考のきっかけ
- 「反実仮想は何でしょうか?この変更がなかったら、何が起きていたでしょうか?」
- 「同時期に、これを説明しうる他の変化はありましたか?」
- 「比較している単位は、本当に比較可能ですか?」
- 「相関関係を説明しうる第三の変数はありますか?」
- 「メカニズムに納得できますか?XがYを引き起こすのはなぜでしょうか?」
- 「データを細分化すると、結論は変わりますか?」
- 「この実験をもう一度行った場合も、同じ結果が得られるでしょうか?」