理学療法士がまとめたノート

統計学備忘録 since2016

Rを使って統計学を勉強するブログです

決定係数(寄与率)

決定係数 {R}^2
回帰係数がどの程度よく当てはまっているか、つまりXがYをうまく説明できているか、ということを明らかにすることは重要になります.決定係数は、その当てはまりを示す基準としてして使用されています.

観測値の平方和(全変動) Sy
回帰による平方和  Sr
残差による平方和 Se

全変動 Sy= 回帰による平方和Sr + 残差平方和Se

決定係数 {R}^2=\frac{Sr}{Sy}

観測値の平方和(全変動) は回帰方程式で説明できる変動と説明できない変動に分けられます.決定係数は回帰による平方和(回帰方程式で説明できる変動)の割合です.ピアソンの相関係数の二乗と同じ値になります.残差二乗和が小さく、決定係数が1に近いほどよいモデルと言えます.(重回帰の場合には、必ずしもそうではありません)

サンプルは回帰分析のページと同じものを使います

x <- subset(CO2, subset = conc == 95, select = c(uptake))     
y <- subset(CO2, subset = conc == 175, select = c(uptake)) 
x <- x$uptake
y <- y$uptake

#回帰分析の結果
Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   1.4784     6.1126   0.242  0.81377   
x             1.6972     0.4876   3.480  0.00592 **

#残差を可視化
e<-y-(1.4784+1.6972*x)
plot(e,xlab="x",ylab="残差", xaxt="n")
abline(h=0, lty=2, col=2)

回帰残差のプロット
f:id:yoshida931:20171128182430j:plain:w400
あまり良いモデルではないようです・・・

平方和の分解から決定係数を算出

全変動を求めてみます

sum((y-mean(y))^2)
=432.7167

残差による変動を求めてみます

yの予測値をyeとします
ye <- 1.6972*x + 1.4784
sum((y-ye)^2)
=195.682

決定係数を求めてみます  

(432.7167-195.682)/432.7167
=0.5477826
#やはり、このモデルではxがyを十分に説明できていません

決定係数は相関係数の二乗になります
相関係数rを求めてみます

cov <- sum((x-mean(x))*(y-mean(y)))
sxy <- sqrt(sum((x-mean(x))^2))*sqrt(sum((y-mean(y))^2))
r = cov/sxy
r^2=(cov/sxy)^2=0.5477825
#決定係数と同じ値になりました

誤差項の分散は回帰分析のあてはまりの良さを表します
推定値の標準誤差 (Residual standard error) を求めてみます
残差 e= yi -1.6972*x - 1.4784

e <- y - 1.6972*x - 1.4784
s = sqrt(sum(e^2)/(length(x)-2))
  =4.423596
#全ての残差が±2sには入っていません
#上の図の中に±2sを書き加えてみたら、1個だけはみ出ておりました・・・

f:id:yoshida931:20171128183358j:plain:w400

続きは下記のページへ
回帰係数の区間推定 - 統計学備忘録 since2016

予測値と残差の相関は0になります

cor(e,ye)
= 3.885081e-06

f:id:yoshida931:20171128184453j:plain:w400

次回は回帰係数の検定を勉強します