統計的因果推論による因果効果を調べる手段として、傾向スコアとIPW推定量という概念があります。ここでは、なぜ傾向スコアを考えるのか、傾向スコアの逆数の重み付けはどのような意味があるのかを、複雑な数式を用いずに具体例を通してご説明します。

さっそくですが、次の具体例を考えます。

  • 受験生が塾に通う場合と通わない場合で、テストの点数がどの程度異なるのか

このとき、下記のデータが得られたとします。塾に通う受験生を通学のA1~A4で表し、塾に通わない受験生を独学のB1~B2とします。

受験生 点数 勉強時間
通学 A1 60 1
A2 80 2
A3 80 2
A4 80 2
独学 B1 50 1
B2 70 2

このとき、通学者の平均点\overline{A}と独学者の平均点\overline{B}の差を求めてみます。

    \[\overline{A} = \frac{60+80+80+80}{4} = 75\]

    \[\overline{B} = \frac{50+70}{2} = 60\]

これにより、通学者の平均点と独学者の平均点の差は、15となりました。よって、塾に通うことにより点数が15点程度上がることが分かります。というような結論でよいのか、ということが因果推論の出発点になります。

上記データの点数は、種明かしをしますと、次のように作成しました。

  • 勉強時間が1ならば点数を50
  • 勉強時間が2ならば点数を70
  • 通学者ならば点数に10を加える
受験生 点数 勉強時間
通学 A1 60=50+10 1
A2 80=70+10 2
A3 80=70+10 2
A4 80=70+10 2
独学 B1 50=50+0 1
B2 70=70+0 2

つまり、単純に通学者の平均点と独学者の平均点の差を求めた結果(=15)は、塾に通うことの本当の効果10点よりも過大に評価されています。

では、なぜ過大に評価されてしまったのでしょうか。

最も本質的な理由は、問題設定と計算方法の相違にあります。問題設定は「受験生が塾に通う場合と通わない場合で、テストの点数がどの程度異なるのか」でした。このとき、「受験生が塾に通う場合」が通学者の平均点、「受験生が塾に通わない場合」が独学者の平均点ととらえました。この点に隔たりが存在します。

この隔たりは、通学者と独学者、塾に通った点と塾に通わない点数の2×2の表にまとめると、状況が理解できます。

通学者 独学者
塾に通う場合の点数 通学者が塾に通う場合の点数 独学者が塾に通う場合の点数
塾に通わない場合の点数 通学者が塾に通わない場合の点数 独学者が塾に通わない場合の点数

この表から、問題設定「受験生が塾に通う場合と通わない場合で、テストの点数がどの程度異なるのか」は、「塾に通う場合の点数」行と「塾に通わない場合の点数」行の比較です。しかし、上記で求めた通学者の平均点は「通学者が塾に通う場合の点数」、独学者の平均点は「独学者が塾に通わない場合の点数」であり、「独学者が塾に通う場合の点数」と「通学者が塾に通わない場合の点数」が考慮されておりません。これが隔たりの正体になります。

しかし、このことがとても大きな問題になります。なぜならば、「独学者が塾に通う場合の点数」と「通学者が塾に通わない場合の点数」は観測できないからです。

そこで、「受験生自体の能力は勉強時間でのみ決定される」という仮定を導入します。これは、上記で種明かしをした「勉強時間が1ならば点数を50」と「勉強時間が2ならば点数を70」に該当します。この仮定を導入すると、観測できない「独学者が塾に通う場合の点数」と「通学者が塾に通わない場合の点数」が推測できるようになります。

塾に通う場合の点数は、次のようになります。観測できない独学者はB’1とB’2としました。観測できない独学者はB’1は、勉強時間が1かつ塾に通うため50+10=60になり、観測できない独学者はB’2は、勉強時間が2かつ塾に通うため70+10=80になります。

受験生 勉強時間 通学者が塾に通う場合の点数 独学者が塾に塾に通う場合の点数
A1 1 60
A2 2 80
A3 2 80
A4 2 80
B’1 1 60
B’2 2 80

同様に、塾に通わない場合の点数は次のようになります。観測できない通学者はA’1~A’4としました。観測できない通学者はA’1は、勉強時間が1かつ塾に通わないため50+0=50になり、観測できない通学者はA’2は、勉強時間が2かつ塾に通わないため70+0=70になります。

受験生 勉強時間 通学者が塾に通わない場合の点数 独学者が塾に通わない場合の点数
A’1 1 50
A’2 2 70
A’3 2 70
A’4 2 70
B1 1 50
B2 2 70

「塾に通う場合の点数」の勉強時間と「塾に通わない場合の点数」の勉強時間が同一の分布になっていることが重要になります。これにより、塾に通う場合の平均値\overline{A'}と塾に通わない場合の平均値\overline{B'}は次のように計算できます。

    \[\overline{A'} = \frac{60+80+80+80+60+80}{6} = 73.333\]

    \[\overline{B'} = \frac{50+70+70+70+50+70}{6} = 63.333\]

よって、問題設定「受験生が塾に通う場合と通わない場合で、テストの点数がどの程度異なるのか」は、塾に通うと10点ほど高くなる効果が見込めるとなり、種明かしに記載した数値と同じになりました。

長々と説明してきましたが、この中にすでに傾向スコアの意味や、傾向スコアの逆数の重み付けの意味が隠されております。上記のデータにおける傾向スコアを求めてみます。

勉強時間が1の傾向スコアは、受験生A1とB1から通学である場合の確率なので、1/2=0.5となります。

勉強時間が2の傾向スコアは、受験生A1~A4とB1から通学である場合の確率なので、3/4=0.75となります。

傾向スコアをまとめると、次のようになります。

  • 勉強時間が1の傾向スコアは、0.5
  • 勉強時間が2の傾向スコアは、0.75

このとき、塾に通う場合の点数は、通学者が塾に通う場合の点数と傾向スコアで、次のように表すことができます。この表と上記の塾に通う場合の点数の表を見比べてみると、26.666×3=80とすると、同じことを計算していることが分かります。つまり、通学者が塾に通う場合の点数/傾向スコアは、通学者が塾に通う場合の点数と独学者が塾に塾に通う場合の点数の一人当たりの合計であることが分かります。

受験生 勉強時間 通学者が塾に通う場合の点数/傾向スコア
A1 1 \frac{60}{0.5}=120=60+60
A2 2 \frac{80}{0.75}=106.666=80+26.666
A3 2 \frac{80}{0.75}=106.666=80+26.666
A4 2 \frac{80}{0.75}=106.666=80+26.666

また、人数Nも、傾向スコアによって次のように表すことができます。

    \[N = \frac{1}{0.5} + \frac{1}{0.75} + \frac{1}{0.75} + \frac{1}{0.75} = 2 + 1.333 + 1.333 + 1.333 = 6\]

同様に、塾に通わない場合の点数は、独学者が塾に通わない場合の点数と傾向スコアで、次のように表すことができます。この表と上記の塾に通わない場合の点数の表を見比べてみると、同じことを計算していることが分かります。つまり、独学者が塾に通わない場合の点数/傾向スコアは、通学者が塾に通わない場合の点数と独学者が塾に通わない場合の点数の一人当たりの合計であることが分かります。

受験生 勉強時間 独学者が塾に通わない場合の点数/傾向スコア
B1 1 \frac{50}{1-0.5}=100=50+50
B2 2 \frac{70}{1-0.75}=270=70+70*3

この場合の人数Nも同様に傾向スコアによって次のように表すことができます。

    \[N = \frac{1}{1-0.5} + \frac{1}{1-0.75} = 2 + 4 = 6\]

これらを数学的にまとめますと、因果効果\tauは処置z_iおよび観測結果y_i、傾向スコアe_i、サンプル数Nを用いて次のように表すことができます。これは、結局のところ、分母は人数を表しており、処置ありの分子は処置ありと処置ありから処置なしの推測を含めた値の合計、処置なしの分子は処置なしと処置なしから処置ありの推測を含めた合計値であることが分かります。

    \[\tau = \frac{\sum_{i=1}^{N}\frac{z_i y_i}{e_i}}{\sum_{i=1}^{N} \frac{z_i}{e_i}} - \frac{\sum_{i=1}^{N} \frac{(1-z_i)y_i}{1-e_i}}{\sum_{i=1}^{N} \frac{1-z_i}{1-e_i}}\]

以上、統計的因果推論による傾向スコアとIPW推定量の理解についてお役に立てましたら幸いです。

関連する記事

  • Python pyqueryを用いて簡単にウェブスクレイピングPython pyqueryを用いて簡単にウェブスクレイピング Pythonでpyqueryパッケージを用いて、ウェブスクレイピングを行う方法をご紹介する。ウェブ上には様々なデータがあるが、必要なデータがいつもファイルとしてダウンロードできるとは限らない。ここでご紹介する方法は、htmlファイルを直接解析して、必要な情報を取得するという方法である。 それでは、さっそく見ていこう。 Ubuntu […]
  • R スティール(Steel)法R スティール(Steel)法 スティール(Steel)法とは、ダネット(Dunnett)法の多重比較に対応するノンパラメトリックな多重比較である。 スティール法を簡単に言うと、正規分布を仮定しない1つの対照群と2つ以上の処理群間を順位を用いて多重比較で調べる方法である。 Rで、スティール法を使う場合は、「スティール(Steel)の方法による多重比較」のページにソースコードが紹介されている。 […]
  • これだけは抑えておきたい成長性分析の基本これだけは抑えておきたい成長性分析の基本 成長性分析とは、様々な観点から成長性・拡大性・発展性を測定する分析である。 規模拡大などの経営戦略がいつも経営者の思い描く通りに進むとは限らないため、様々な観点から自社および自社を取り巻く環境の状況を把握する必要がある。 ここでは、成長性分析の代表的な指標をいくつか紹介する。 売上高伸び率 売上高伸び率とは、前期売上高より当期売上高がどの程度上昇または下降したかを […]
  • R言語 CRAN Task View:臨床試験デザイン、監視、および分析R言語 CRAN Task View:臨床試験デザイン、監視、および分析 CRAN Task View:Clinical Trial Design, Monitoring, and Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Ed Zhang and Harry G. Zhang Contact: Ed.Zhang.jr at […]
  • R ggplot2を用いて散布図と周辺分布をプロットする方法R ggplot2を用いて散布図と周辺分布をプロットする方法 ggplot2を用いて散布図と周辺分布をプロットする2つの方法をお伝えします。 最初の方法は、ggExtraパッケージのggMarginal関数を用いる方法で、周辺分布を簡単にプロットすることができます。 二番目の方法は、散布図と周辺分布を作成した上で、一つにまとめる方法です。 それぞれ一長一短があります。 最初の方法は、コード量が少ないですがグラフとして […]
統計的因果推論による傾向スコアとIPW推定量の基本的な考え方