こんにちは。林岳彦です。ggplot2を使いこなすシャレオツな若い人を見ると自分の老いを感じる今日このごろです。
さて。
今回は、「説明変数と誤差項に相関がある」とはどういうことか、について見ていきたいと思います。
経済学系の統計解析の本を読んでいると「内生性」という概念がよく出てきます(経済学系でない分野においては、「交絡」と呼ばれるものに実務上はおおむね対応する概念と言えます)。
この「内生性」の説明としては、例えば:
計量経済モデルにおいて、説明変数と誤差項との間に相関があるときに、内生性(endogeneity)があるという。このとき、説明変数は内生的(endogenous)であることになる。説明変数が内生的であれば、推定されたパラメータは一致推定量ではなくなり、推定値は統計学的に信頼されるものとはなりえない。
のように説明されます(内生性 - Wikipediaより引用*1。強調は引用者による)。
お分かりになりましたでしょうか。
うーん。このように「説明変数と誤差項との間に相関があるとき」とペロっと言われても、それはいったい内実としてどういうことなのでしょうか? ここはちょっと直感的には掴みづらいところがあります。説明変数と誤差項との相関。やれやれ。村上春樹の小説の主人公ならばそう呟くところかと思われます*2。
少なくとも、私も長らくのあいだ「頭では概念として理解はできるけども、なんか腑に落ちた気がしないんだよなあ!」みたいなかんじでモヤモヤを抱えてきました。(一般的な傾向として、「交絡」の概念の方により親しんでいる人々にとっては「内生性」の概念はにわかに掴みづらいところがあると思います)
なので今回、「説明変数と誤差項に相関がある」という現象について、具体的な数値例と数式と散布図などを行き来しながら一度のんびりと眺めてみようと思いました。
以下はその観察記録です。あと、私はRの作図用パッケージであるggplot2を余り使ったことがなかったのでその練習も兼ねております。なんか、ggplot2を使う若者が、眩しかったので。
いつもながらめちゃくちゃ長い記事となっておりますが誠に申し訳ありません(一二塁間を鋭く転がるゴロに対して菊池涼介が飛びつくイメージで土下座)。もしご興味のある方はあくまでごゆるりとご参照いただければと思います。
注:以下の内容では特に何か新奇なことが書いてあるわけではありませんが、例えばもしあなたが「内生性があるとき、説明変数と残差の間には相関はありますか?」と聞かれて即答できなかったり、即答できたとしてもその話と「誤差」と「残差」の関係についてモヤモヤが残るようであれば、以下の内容を読むことで何らかの気付きがあるかもしれません。
まずそもそも:回帰分析の「誤差項」って何だろう?
まずちょっと誤差項について「そもそも」的な話をしておきたいと思います。「説明変数と誤差項の間に相関がある」という話が直感的に飲み込みにくい理由のひとつは、「誤差」という語の一般的なイメージにあるように思います。
分野と文脈にもよるかもしれませんが、一般に「誤差」という語は「偶然により生じるバラツキ」という意味内容で用いられることが多いかと思います*3。
この「誤差=偶然によるバラツキ」のイメージだと、「説明変数」と「誤差項」が相関する、と言われてもちょっと直感的には分かりにくいかもしれません。「偶然」なのに「相関」する、というのはちょっとモヤモヤしますよね。偶然と相関は別ではない、むしろその一部として存在するのだ。村上春(以下略)
実際には、回帰分析における「誤差項」というのは、「偶然によるバラツキ」というよりも「回帰モデル内に含まれていない要因に起因するバラツキ」を表すものと言えます。そんなこと知ってるよ!という方も多いかと思いますが、以下では具体的な数値例をもとに、「説明変数と誤差項に相関がある」という現象がどう生じるかをのんびりと眺めていきます。
数値例で考える:手始めとして内生性がないケースについて
「残差」との相関をみてみよう(内生性がない場合)
まず説明変数であると「残差」の相関を見てみます。残差とは「実際のデータであるの値」と「得られた回帰モデルによるの予測値」の差分となります。図で表すと、実際のデータと回帰直線との縦側のズレが回帰分析における「残差」になります(下図のイメージ)。
数値的なイメージを掴むため、の予測値("Y_predict"), 残差("Y_residual")の数値も以下に示しておきます(最初の10データ):
## Y X Y_predict Y_residual
## 1 117.74459 20.109453 110.09058 7.654013021
## 2 101.26213 33.286928 123.34805 -22.085923505
## 3 104.58084 14.875842 104.82519 -0.244353842
## 4 132.57335 28.215392 118.24573 14.327627596
## 5 119.69218 29.661538 119.70065 -0.008472325
## 6 131.00739 42.609494 132.72721 -1.719821246
## 7 135.54970 34.281848 124.34901 11.200687438
## 8 123.86800 23.308985 113.30953 10.558463946
## 9 117.50302 38.755424 128.84975 -11.346723721
## 10 96.44099 21.651110 111.64159 -15.200605708
上記の「残差」の値の1000人分の分布も描いてみます。0の周りにおおむね対称にバラついていることが分かります。
では「」と「残差」の相関を見てみましょう。どん!
はい。安心してください。相関はありません。
これはある意味当たり前の話になります。なぜなら、そもそもこのような回帰分析では回帰直線の傾きが「説明変数以外で説明できないバラツキ」との相関がゼロになる(直交する)ように選ばれているからです(以下の参考図のイメージ/必要に応じて拡大などしていただければ幸いです)。
*この辺りの回帰分析と残差にまつわるエトセトラについては以下のhoxo_mさんの記事の説明がとてもステキだと思いますので適宜絶賛ご参照いただければと思います:
・ 統計的消去で擬似相関を見抜こう! - ほくそ笑む
「誤差」と「」の相関をみてみよう(内生性がない場合)
では次は、「誤差」と「」の相関をみていきましょう。
はてと。実は、困ったことに、通常はデータから「回帰分析の誤差項」そのものは算出できません。
・参考:BellCurveさんの良記事→ 27-3. 予測値と残差 | 統計学の時間 | 統計WEB
しかし、今回はチート的状況として「真のメカニズムモデル」が以下の式1により与えられています。
(式1)
そこで本記事では、式1の変形から「のうちでは決まらない部分」を「誤差」と定義することにより:
の式により「誤差」の値を算出していきます。
イメージを掴むため、の予測値("Y_predict"), 残差("Y_residual"), 誤差("Y_error_byEq1")の数値表を以下に示します(最初の10データ):
## Y X Y_predict Y_residual Y_error_byEq1
## 1 117.74459 20.109453 110.09058 7.654013021 97.63514
## 2 101.26213 33.286928 123.34805 -22.085923505 67.97520
## 3 104.58084 14.875842 104.82519 -0.244353842 89.70500
## 4 132.57335 28.215392 118.24573 14.327627596 104.35796
## 5 119.69218 29.661538 119.70065 -0.008472325 90.03064
## 6 131.00739 42.609494 132.72721 -1.719821246 88.39790
## 7 135.54970 34.281848 124.34901 11.200687438 101.26785
## 8 123.86800 23.308985 113.30953 10.558463946 100.55901
## 9 117.50302 38.755424 128.84975 -11.346723721 78.74760
## 10 96.44099 21.651110 111.64159 -15.200605708 74.78988
上記の「誤差」の値の1000人分の分布は以下のようになります。90くらいの値を平均として対称に分布していることが分かります。
さて。ではこれらの誤差とのあいだに相関はあるでしょうか? 誤差との散布図を見てみましょう!
はい。相関はありません。つまりこの例では「内生性が」ない、ということになります。
ここで、「残差」と「誤差」の分布を重ねて見てみましょう。(改めて考えてみると、なかなか、「誤差の分布」と「残差の分布」を重ねてみることは無いのではないでしょうか。私も今回はじめてこのような作業をしてみました!)
両者の分布は形状は似ていますが、平均の位置がズレています。この平均のズレの理由は、回帰分析の中では「以外の要因からの影響」のうち「平均に関する影響」は定数項(切片)として切り分けて扱われているためです。
上記の誤差について「誤差 - 回帰モデルの切片の値」として定数項分の補正を行うと、両者の分布の中心はゼロとなり、分布全体が以下のようにほぼ一致します:
はい。もしかしたら、このように切片のぶんだけ補正すれば「誤差」と「残差」の分布が重なるのは当たり前のようにも思う方も多いかもしれません*8。
しかしながら、後で見るように、「誤差」と「残差」の分布は(切片の補正を行っても)内生性がある場合には一般に重なりません。
(やっと)まとめ
はい。今回もとても長くなってしまいました。いちおう所感をまとめておきます:
- 内生性がないときは「誤差」と「残差」の分布は基本的に重なる(と期待できる)が*14、内生性があるときは「誤差」と「残差」は一般に重ならない*15
- 回帰モデルが値の観点から「良く適合している」ということと、そのモデルの説明変数の回帰係数がその「因果効果の良い推定値」かどうかは、本質的には別の問題である
- 説明変数が内生性をもつとき、「の回帰係数」と「への介入効果の推定値」はズレる(バイアスが生じる)
- 説明変数が内生変数であっても、内生性をもつとは限らない。やれやれ。村(略)
- 「誤差」をモデルに含まれていない諸要因の「関数」として敢えて決定論的な枠組みから眺めてみると、少し「説明変数と誤差の相関」というものが身近になるかも
-
- けっきょくggplot2の使い方がやっぱり今ひとつ腑に落ちず自分の老いを感じた
- ggplot2を使いこなすシャレオツな若者を見ると自分の老いを感じる
- tidyverseを使いこなすシャレオツな若者を見ると自分の老いを感じる
- Stanを使いこなすシャレオツな若者を見ると自分の老いを感じる
- 最近までPythonの読みを「フィソン」だと思っていたことは絶対に秘密
- あと環ROYのことも「かんろい」だと思ってた
はい。
本当は、これからさらに:
- では、説明変数と残差に相関が出るのはどういうときなのか
- 「説明変数と誤差の相関」と「共変量のバランシング」の関係
などについてものんびり眺めてみようと思っていたのですが、もう力尽きたので、ここに書くのはやめておきます。
というわけで今回の記事は終わりです。
今回も非常に長い記事をここまでお読みいただいた方、大変ありがとうございました!
#わたくしごとですが、来る10月1日から、弊研究所内でのルーティン的異動により所内企画部に半年間の時限付き出向となるため、暫くのあいだブログやSNSの稼働率はさらに大幅に低下すると思いますがどもすみません。
#RStudioで書いた今回の「Rコード+解説メモ」をこちらに置いておきますので、お好きな方は適宜どうぞ!→ html, Rmd
【参考情報など】
横浜国立大の黒木学先生による、因果関係を関数的関係の連なりとして捉える「構造的因果モデル」の教科書がさいきん出ました。いわゆるPearlの体系とRubinの体系が理論的にはシームレスであることも解説されています*16。この内容が日本語で読めることの幸せたるや!激オススメです!
黒木先生の本はちょとまだ難しいかな・・・という方は、こちらをどうぞ。わたくしと黒木先生の共著によるバックドア基準の入門的解説原稿も収録されています。
「因果効果を調べたい目的変数の挙動はそもそもどの共変量のどのような関数でありうるか」を粘り強く考える習慣や技量*17を身につけると、内生性に対する考察だけではなく、交互作用の理解や一般化可能性に関する考察もより明晰にできるようになっていきます。因果推論における交互作用の解説については、以下のKRSK_phsさんの記事が激オススメです。とても大事なことが分かりやすく説明されています!
krsk-phs.hatenablog.com
おまけ:たまきろい*18。ことの次第。ことばの因果的連関。凄い。
環ROY / ことの次第