Rでの多重回帰分析結果の見方
データ探索
tail(attitude)
Rで、組み込みデータattitude
を読み込んで、tail()
関数で確認してみよう。このデータで重回帰分析を行うつもりだ。
rating
を従属変数として、他の独立変数がrating
にどれくらい影響を与えるかに関心がある。データだけ見てもrating
と他の変数との間に線形関係があるか確かめるのは難しいので、図を描いて確認してみよう。
win.graph()
plot(attitude)
単にplot()
関数にデータを入れて実行すると、変数ごとに比較した点の図を出力してくれる。
一見すると、rating
はcomplaints
とはっきりとした線形関係があるようだ。他のlearning
やraises
も線形関係にあるようだが、complaints
と比べると散らばり具合が激しい。単回帰分析と同様に、lm()
関数に線形モデルを入力して、summary()
関数で結果を見ることができる。
結果の解釈
以下のコードでは、1~2列目と3列目は完全に同じ表現だ。線形モデルを入力するときに記述される点(.)は「その他のすべての変数」を意味する。[注意:ここでrating~.-privileges
と入力してprivileges
だけを除外する方法も使える。]
out<-lm(rating~complaints+privileges+learning
+raises+critical+advance,data=attitude)
out<-lm(rating~.,data=attitude)
summary(out)
- 「知らなくてもいい」というのは、本当に知らなくてもいいというわけではなく、急いで勉強して結果を読み取る必要がある立場で、すぐに参考にすべき指標ではないという意味だ。
(1) 残差
中央値(中央値)を中心に他の分位数が対称的に現れるかどうかの程度だけ見ても構わない。分位数だけでは適切なモデル診断ができないため、意味はない。
(2) 推定値
各変数による回帰係数で、(Intercept)は回帰線の$y$切片を表し、残りは各変数毎の単位変化率を示す。単回帰分析と違って様々な独立変数があるため、有意水準によって結果が変わる。有意水準$5 \%$ではlearning
の回帰係数が$0$であるという帰無仮説は棄却されないため、
$$
\text{(rating)} = 0.61319 \cdot \text{(complaints)} + \varepsilon
$$
その一方で、有意水準$10 %$では次のようにモデルを縮小することもできる。
$$
\text{(rating)} = 0.61319 \cdot \text{(complaints)} + 0.32033 \cdot \text{(learning)} + \varepsilon
$$
(3) 標準誤差
知らなくてもいい。推定値の標準誤差であり、これを使用して回帰係数の信頼区間を求めることができる。
(4) t値
知らなくてもいい。推定値を標準誤差で割った値であり、自由度$n-p-1$のt分布に従う検定統計量になる。これを通じて回帰係数が統計的に有意かどうか仮説検定を行うことができる。
(5) p値 pr(>|t|)
これが小さいということは、回帰係数が有意であり、相関関係があることを示したい場合は、小さいほど良いということだ。この値がどれだけ小さいかによって、直下のSignif. codesに従って点が打たれる。通常、有意水準は5%とされるので、点が1つでも打たれれば、相関関係があると見なしても構わない。この値が大きく回帰関係がないことが明らかになった場合、回帰係数がどのように決定されたとしても、統計的には意味がない。このp値はt分布から出たものなので、pr(>|t|)という表現が適切であることがわかる。
(6) 修正決定係数
この分析が変数の数に対してデータをどれだけよく説明しているかを示す尺度であり、高ければ高いほど良い。回帰分析では、変数の数が増えることは、それだけ使用できるデータが増えることを意味し、そのときに説明力$R^{2}$は必ず増加する。修正決定係数と決定係数の違いは、$\displaystyle R^2 = 1 - {{ \text{ SSE } } \over { \text{ SST} }}$と違って $$ \displaystyle R^{2}_{a} = 1 - {{ \text{ SSE } / (n - p - 1) } \over { \text{ SST} / (n - 1) }} $$ 変数の数が反映されるように計算されるところだ。実際の応用数学で変数の数を増やすということは、コストの増大を意味し、当然これを減らす方法を考えなければならない。修正決定係数$R^{2}_{a}$は変数の数に対するペナルティを適用し、決定係数を補正し、モデルとモデルを比較するのに使用される。変数をたくさん増やしても修正決定係数があまり増加しない場合、それだけ無駄なことをしたと見なされる。
(7) F統計量
これのp値が小さいということは、有意な回帰係数が存在するということであり、相関関係を示したい場合は、小さいほど良い。回帰係数のt検定が回帰係数一つ一つに対する検定であれば、F検定は回帰分析自体に対する検定だ。p値を別にして、F統計量自体について語れば、モデルを比較するのに便利に使われる。
ただ、これで結果を見ることができたとしても終わったわけではないことに注意。重回帰分析が単回帰分析よりもずっと難しいのは、独立変数が増えることでなかったさまざまな問題が生じるからだ。数値計算だけでは説明が難しいさまざまな確認手順が残っており、実際はこれをうまくできることが、学部レベルの回帰分析をうまくできることだ。
コード
以下はRで書かれた全体の例題コードだ。
tail(attitude)
win.graph()
plot(attitude)
out<-lm(rating~complaints+privileges+learning
+raises+critical+advance,data=attitude)
out<-lm(rating~.,data=attitude)
summary(out)