マガジン

相関があっても因果とは言えない理由:第三の要因を探す質問リスト

AIを使いこなす

Claudeで執筆し、GPTで自動校閲・修正しています。

二つの数値の連動と、因果を判断する前に第三の要因を確かめる手書きメモ
記事の内容をもとに制作したAI生成イメージです。実際の製品画面や検証結果の写真ではありません。

二つの数字が一緒に動いているのを見つけると、「Aを増やせばBが増える」と言いたくなります。しかし、相関があるだけでは因果とは言えません。相関が示すのは「一緒に動く傾向がある」ことだけで、「どちらが原因か」「そもそも原因と結果の関係なのか」は、グラフや相関係数からは分からないからです。 総務省統計局の「なるほど統計学園」でも、散布図で分かるのは二つの量の間に関係がありそうかどうかまでで、因果関係までは示さないと説明されています。例として挙がっているのは、働く人の血圧と給料です。年齢が高い人ほど血圧と給料が高い傾向があるため、両者に関係があるように見えても、血圧を上げると給料が上がるとは言えません(総務省統計局「散布図」)。 断定の前に疑うことは、大きく三つあります。 • 逆の因果:原因と結果が逆ではないか • 第三の要因:両方に影響する別の何かがないか • 偶然:たまたま、または探し回った結果ではないか この記事では、この三つを点検する質問リストと、架空の事例、AIに点検を手伝わせる依頼文、結論の書き方の判断表を順に示します。

この記事の目次
  1. 質問リスト:断定する前に12問
  2. 説明用の例:学習アプリの通知と継続日数
  3. AIに点検を手伝わせる依頼文
  4. 第三の要因で分けて確かめる最小コード
  5. 結論の書き方:判断表

質問リスト:断定する前に12問

分析結果を人に伝える前に、上から順に確認します。「はい」「分からない」が出た項目は、結論の言い方を弱めるか、追加で調べる対象になります。

逆の因果を疑う質問

  1. Aが先に変化し、あとからBが変化したことを、日付や順序で確認できますか。
  2. Bが高い(低い)状態だから、結果としてAを増やした(減らした)可能性はありませんか。たとえば売上が好調な月に広告予算を増やす運用なら、「広告費が多い月は売上も多い」は逆向きの可能性があります。
  3. AとBが互いに強め合う関係(循環)ではありませんか。

第三の要因を疑う質問

  1. AとBの両方に影響しそうな要因(年齢、規模、季節、地域、もともとの水準)を3つ挙げられますか。
  2. そのデータには、4で挙げた要因の列がありますか。なければ、「測っていないだけ」で存在しないとは限りません。
  3. 要因ごとにデータを分けて(例:規模の大・中・小)見ても、同じ向きの関係が残りますか。
  4. 比較する二つのグループは、最初から性質が違う集まりではありませんか。自分で選んだ人と選ばなかった人を比べていないでしょうか。

偶然を疑う質問

  1. データの件数は十分ですか。少数の外れ値が相関係数を大きく動かしていませんか。
  2. 多数の項目の組み合わせを総当たりで調べ、その中で目立ったものだけを選んでいませんか。
  3. 期間や対象を少し変えても、同じ傾向が出ますか。
  4. 時間とともに増える(減る)数字同士を比べていませんか。どちらも右肩上がりなら、無関係でも相関は高く出ます。
  5. 「もし関係があるなら、他にこういう現象も起きるはず」という別の予測を立てて、確かめましたか。

説明用の例:学習アプリの通知と継続日数

次は、読み方を練習するための架空の事例です。実在のアプリや調査結果ではなく、数値も作った仮のものです。

語学学習アプリの担当者が、利用者100人のデータを見ました。「週に通知を開いた回数」と「その後8週間の学習継続日数」の相関係数が0.7でした。担当者は「通知をもっと送れば継続日数が伸びる」と考えました。

質問リストを当てはめると、次のように整理できます。

  • 1・2(逆の因果)、この例での点検:継続している人ほどアプリを毎日開くので、通知も自然に開く、見えてくること:「継続した結果、通知を開く」という逆向きが成り立つ
  • 4・6(第三の要因)、この例での点検:登録時点の学習意欲が高い人は、通知も開き、続けもする、見えてくること:登録時の意欲別に分けて相関が弱まれば、意欲が混ざっていた可能性が高い
  • 7(グループの違い)、この例での点検:通知をオンにする人は、そもそも熱心な人かもしれない、見えてくること:通知オン・オフの比較は公平な比較になっていない
  • 9(探し回り)、この例での点検:20個の行動指標から相関の高いものを選んでいた、見えてくること:偶然高く出た指標を拾っている可能性がある

この例から言えるのは、「通知を送れば継続する」とは言えないことと、確かめるなら通知の送り方をランダムに分けて比べる試験(A/Bテスト)が必要だ、ということです。ただしこの実験の実施可否や、利用者データの扱いの可否は、アプリの運営側のルールや各国の法令に左右されるため、ここでは立ち入りません。

AIに点検を手伝わせる依頼文

AIは、見落としている要因の候補を挙げたり、質問リストに沿って文章を点検したりするのが得意です。ただし因果の有無を決めるのはAIではありません。AIに任せるのは「疑う観点の洗い出し」、人が確認するのは「データにその列があるか」「日付の順序はどうか」「実際に分けて計算した結果」です。

AIに渡す情報は、列名と集計の概要、データの取り方の説明程度で足ります。顧客名、個人を特定できる値、社内の機密数値は、そのまま貼らず、説明用の仮データや丸めた値に置き換えてください。サービスの学習利用の設定を切っても、秘密保持が保証されるわけではありません。

次の依頼文は、そのまま貼って使える形にしてあります(未実行の例です)。

あなたはデータ分析のレビュー担当です。
次の分析結果について、「AがBの原因である」と断定してよいかを点検してください。

【分析の概要】
- 比較した2つの指標:A=(週の通知開封回数)、B=(8週間の継続日数)
- 結果:相関係数0.7(n=100)
- データの取り方:利用者の行動ログを、各自の登録後8週間分集計
- 手元にある列:登録日、通知設定、開封回数、継続日数、年齢層
- 手元にない列:登録時の学習目的や意欲

【依頼】
1. 逆の因果が成り立つ筋書きを2つ挙げてください。
2. 第三の要因の候補を5つ挙げ、それぞれ「手元の列で確認できるか」を書いてください。
3. 偶然の可能性を調べるために、追加で確認すべきことを3つ挙げてください。
4. 最後に、この結果について「言ってよい表現」と「言ってはいけない表現」を各2文で示してください。

わからないことは推測で埋めず、「追加情報が必要」と書いてください。

返ってきた候補は、そのまま採用せず、質問リストの5(列があるか)と6(分けて見ても残るか)に戻って、手元のデータで確かめます。

第三の要因で分けて確かめる最小コード

第三の要因の候補が手元の列にあるなら、その列で層に分けて相関を計算し直すのが最初の一手です。次のコードは、pandasのDataFrame.corrを使う形で書いた説明用の例で、この記事のために実行して確かめてはいません。列名は例です。

python
import pandas as pd

df = pd.read_csv("sample.csv")  # 列: clicks, streak_days, baseline_days

# 全体の相関(Pearson)
print(df[["clicks", "streak_days"]].corr())

# 第三の要因の候補(baseline_days)で3層に分け、層ごとに計算
df["band"] = pd.qcut(df["baseline_days"], 3, labels=["低", "中", "高"])
for name, g in df.groupby("band", observed=True):
    r = g[["clicks", "streak_days"]].corr().iloc[0, 1]
    print(name, len(g), round(r, 2))

pandasのDataFrame.corrは、既定でPearson相関を計算し、methodでKendallやSpearmanも選べます。欠損値はペアごとに除外され、有効な観測だけが使われます。min_periodsで、計算に必要な最小件数を指定することもできます(確認したのはpandas 3.1.0版のページです)。

読み方の目安は次のとおりです。

  • 層に分けると相関がほぼ消える:第三の要因が混ざっていた可能性が高い。
  • どの層でも相関が残る:その要因だけでは説明できない。ただし、因果が証明されたわけではありません。他の要因や逆の因果は残っています。
  • 層ごとの件数が小さい:層ごとの値は不安定です。偶然の可能性(質問8)を考えます。

結論の書き方:判断表

点検の結果に応じて、報告書や記事に書く表現を選びます。

  • 相関を見ただけで、点検は未実施、使える表現:「AとBには連動する傾向がある」、避ける表現:「Aが原因でBが増える」
  • 逆の因果が否定できない、使える表現:「どちらが先かは今回のデータでは分からない」、避ける表現:「Aを増やせばBが上がる」
  • 第三の要因候補の列がなく、確認できない、使える表現:「別の要因が影響している可能性がある」、避ける表現:「他の要因は関係ない」
  • 層別でも傾向が残る、使える表現:「要因○○で分けても傾向は残った。ただし因果の確認には比較実験が必要」、避ける表現:「因果関係が確認された」
  • 件数が少ない・探し回った、使える表現:「仮説として有望。別のデータで再確認したい」、避ける表現:「明らかになった」

因果を主張したい場合の次の一手は、条件をランダムに割り当てる比較実験を設計するか、実験できない場合は、第三の要因を測る列を増やしてデータを取り直すことです。まずは分析結果の隣に、この表の「使える表現」を一文だけ添えるところから始めてください。

出典・参考資料