logo

質的変数を含む回帰分析 📂統計的分析

質的変数を含む回帰分析

概要

回帰分析を行う際に、常に量的変数が独立変数として入ってくるとは限らない。性別が何か、どの企業に属しているか、どのような色か、金属かどうかなど、カテゴリカルなデータも分析に反映させる必要がある。

ビルドアップ 1

今年の就職者全員の大学入試成績 $X_{1}$、年齢 $X_{2}$、性別 $S$、最終学歴 $E$ で初任給 $Y$ を推測すると想像してみよう。多重回帰分析を使用すれば、$Y \gets X_{1} + X_{2}$ のように年収 $Y$ に成績 $X_{1}$ と年齢 $ X_{2}$ がどのような影響を与えるかを知ることができるだろう。得られる回帰式は $$Y = \beta_{0} + \beta_{1} X_{1} + \beta_{2} X_{2} + \varepsilon $$ であり、仮説検定を通じて統計学的に有意ではない変数を捨てなければならない。ここに性別 $S$ を加えると、 $$Y = \beta_{0} + \beta_{1} X_{1} + \beta_{2} X_{2} + \beta_{3} S + \varepsilon $$ のように式が修正されるだろう。しかしながら、男性や女性は数値ではないため、回帰係数を掛けることができない。そのために思いついたのが、指示関数indicator functionを使用することだ。

統計学において指示関数とは、データがそのカテゴリに属しているか否かに応じて、$1$ あるいは $0$ の値を取る関数を指す。指示関数を使用して、$S = \begin{cases} 1 & ,\text{여성} \\ 0 & ,\text{남성} \end{cases}$ のような変数を定義すれば、最終的に得られる回帰式は

  • 男性の場合$$Y = \beta_{0} + \beta_{1} X_{1} + \beta_{2} X_{2} + \beta_{3} + \varepsilon $$
  • 女性の場合$$Y = \beta_{0} + \beta_{1} X_{1} + \beta_{2} X_{2} + \varepsilon $$

となる。さらに、学歴 $E$ が加わると、 $$Y = \beta_{0} + \beta_{1} X_{1} + \beta_{2} X_{2} + \beta_{3} S + \beta_{4} E + \varepsilon $$ のように式が修正されるだろう。学歴は性別と違い複数のケースが考えられるが、単純に $E = \begin{cases} 3 & ,\text{박사} \\ 2 & ,\text{석사} \\ 1 & ,\text{대졸} \\ 0 & ,\text{고졸} \end{cases}$ のように4つのケースがあると考えてみよう。多くのケースがあるため指示関数を使用するのが難しいが、3つの変数 $$E_{1} = \begin{cases} 1 & ,\text{대졸} \\ 0 & ,\text{고졸} \end{cases} \\ E_{2} = \begin{cases} 1 & ,\text{석사} \\ 0 & ,\text{고졸} \end{cases} \\ E_{3} = \begin{cases} 1 & ,\text{박사} \\ 0 & ,\text{고졸} \end{cases}$$ に分けることで簡単に解決できる。最終的に回帰式は、 $$Y = \beta_{0} + \beta_{1} X_{1} + \beta_{2} X_{2} + \beta_{3} S + \gamma_{1} E_{1} + \gamma_{2} E_{2} + \gamma_{3} E_{3} + \varepsilon $$ として拡張される。

実践

実際にRで質的変数を含む回帰分析を行うときは、このように複雑な操作をする必要はない。組み込みデータToothGrowthを読み込んでみよう。

20180907_165557.png ToothGrowthは、ビタミンCまたはオレンジジュース(supp)を異なる量(dose)で摂取させ、その歯の長さ(len)を記録したデータだ。多重回帰分析と同様に、カテゴリカル変数を入れるだけで自動的に分析が行われる。

20180907_165610.png 結果を見ると、投与量を増やすと歯の長さも伸び、ビタミンCを投与するとむしろ長さが縮むとされている。

常識的にみても、オレンジジュースを常に飲んでいるモルモットの栄養バランスがより良いはずで、特にカルシウムなどのミネラルは調節が容易で、実験で非常に過剰な量を与えたわけではないので、多ければ多いほど良いと納得できる。説明力も$R_{a} = 0.6934$ で悪くないし、全体的に大きな問題は見られない。

しかし、残差プロットを見ると変な点がある。

1.png データを見ると、30番目まではビタミンを投与し、31番目からはオレンジジュースを飲ませている。一見、大量のビタミンの後に少量のビタミンが歯の長さに良い影響を与えているように見える。もちろん、実際の世界ではこのような偶然が起こることもあるが、その場合、そもそも統計学を学ぶ必要はないだろう。努力してこの問題を解消できるかはわからないが、学者たちはこの現象を交互作用と名付け、解決法を研究してきた。

コード

以下は例示コードだ。

head(ToothGrowth); tail(ToothGrowth); str(ToothGrowth)
out1<-lm(len~.,data=ToothGrowth); summary(out1)
 
win.graph(5,5); plot(rstudent(out1), main="Standardized Residual Plot 1"); abline(h=0)

  1. Hadi. (2006). Regression Analysis by Example(4th Edition): p121~125. ↩︎