R言語と重回帰分析(重回帰分析はじめました編)
Rと重回帰分析
http://mjin.doshisha.ac.jp/R/14.pdf
テストとして資料に載っている身長、ウエストを説明変数、体重を被説明変数とした重回帰分析を行ってみる。
テストデータを作成
taikei2にこのテストデータを入れます
taikei2 <- data.frame(wight,height,waist)
・体重、身長、ウエストそれぞれどんな関係を持っているか(相関)を調べるため、相関行列と対散布図を求める。相関は関数cor を用いて求める。
#round(x,y) x:丸める実数 y:小数点y以下を丸める
# R の内部では 10 進数を 2 進数に直して計算しているため,小数計算の種類によっては近似値(循環小数)になり,計算結果にゴミ(数値誤差)が生じる場合がある.
#相関には以下の 3つのパターンがあります。
#相関の強さを客観的に表すために、数値で表したものを相関係数(r)といいます。
(1) ある変数が増大すればするほど、もう一方の変数が増大する。(正の相関, 0 < r ≦ 1)
(2) ある変数が増大しても、もう一方の変数は無関係な値をとる。
(3) ある変数が増大すればするほど、もう一方の変数が減少する。(負の相関, -1 ≦ r < 0)
・対散布図はpairsを用いる
pairs(taikei2,pch=21,bg="red",cex=2)
分布図の見方
図は http://mt-net.vis.ne.jp/ADFE_mail/0208.htm より拝借しました。
相関係数と対散布図からわかるように、体重と身長、体重とウエストの間には強い線形的相関がある。また、身長とウエストの相関係数が約0.59 で、相関関係が見られる。らしい。
ここでは体重を被説明変数(目的変数、従属変数、応答変数)とした回帰分析を行うことに
する。データセットの中の体重を被説明変数、それ以外の全ての変数を説明変数とした場
合は、関数lm を用いて次のように重回帰分析行うことができる。
関数の中の「.」はtaikei2 データの中の、被説明変数以外の全ての変数を説明変数として用いることを示す。
返された結果Coefficients が回帰式の係数であり、これを用いた回帰式は次のように構築する。
体重= -161.670+1.022×身長+0.709×ウエスト
・この回帰式がどの程度信頼できるのか(要約情報)を検証する
決定係数(Multiple R-Squared)は0.9901、調整済みの決定係数(Adjusted R-squared)は0.9872である。
#決定係数 得られた回帰式の精度を客観的な指標で表わす指標。『その式に取り入れられた説明変数(身長、ウエスト)の変動によって目的変数(体重)の変動の98.72%が説明できる』ということ。残りの1.〜%は式に含まれない別の要素が関係している。
・この回帰式の精度を診断する
par(mfrow=c(2,2),oma="1,1,2,1",mar=c(4,4,2,1))
次に描く図やグラフを描くスペースを2行2列に分割
詳しい引数はこちらを見たほうが良いです。
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/55.html
図の左上:横軸を予測値、縦軸を残差(実測地ー予測値)としたプロットです。当てはめが悪いデータにはラベルがつきます。ここでは1,3,4
右下:横軸をてこ比、縦軸を「基準化した残差」としたプロットです。対象とした1つのデータが、回帰モデルに与える影響度を調べます。全データを用いた場合の回帰係数と、対象としたデータ1点を除いた場合の回帰係数を求め、影響が大きい、すなわち特異なデータにはラベルがつきます。ここでは、1、4、10。あるデータのCook's Distanceが0.5以上、特に1.0以上の場合は特異なデータであると考えます。
右上:横軸を予測値、縦軸を「基準化した残差の絶対値の平方根」としたプロットです。
左下:正規Q-Qプロットを呼ばれるもので、正規分布に従っている場合は点が直線状に並び、正規分布に従っていない場合は直線から外れます。
ちょっと何を言っているか右上と左下がいまいちよくわからなかったけど、左上のラベルがついたデータは回帰式の当てはめが悪い。右下の点線に入っているデータは特異なデータだっていうことがわかった!
次回は説明変数同士の相関を調べます。