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

統計学備忘録(R言語のメモ)

since2016 ときどきTEXのメモ

回帰分析の結果の解釈

単回帰分析

dat <- LifeCycleSavings      

# sr(個人貯蓄の合計), pop15(15歳未満の人口の数値%), pop75(75歳未満の人口の数値%), dpi(可処分所得、自由に使える収入), ddpi(dpiの成長率)

reg1 <- lm(sr ~ pop15, data=dat)    
summary(reg1) 

次のような結果が出力されます

            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 17.49660    2.27972   7.675 6.85e-10 ***
pop15       -0.22302    0.06291  -3.545 0.000887 ***

結果の解釈について
Intercept=17.4966
「15歳未満の人口が0%の場合には個人貯蓄合計が平均17.49660になる」と解釈できるのですが、15歳未満の人口が0%というのはあまり現実的な解釈ではありませんので、次のように書き換えます.

reg2 <- lm(sr ~ I(pop15-10), data=dat)
summary(reg2)

結果の切片は、15歳未満の人口が10%の場合の平均的な個人貯蓄合計を意味することになります。切片が変わるだけすのでpop15の係数の推定値は変化していません。

              Estimate Std. Error t value Pr(>|t|)    
(Intercept)   15.26642    1.67802   9.098 5.09e-12 ***
I(pop15 - 10) -0.22302    0.06291  -3.545 0.000887 ***

結果の解釈について
Intercept=15.26642
15歳未満の人口が10%の場合には個人貯蓄の合計が約15.3になり、さらに15歳未満の人口が1%増加するごとに個人貯蓄の合計が平均して0.22減少することが推定されます。
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Residual standard error: 4.03 on 48 degrees of freedom
Multiple R-squared:  0.2075,    Adjusted R-squared:  0.191 
F-statistic: 12.57 on 1 and 48 DF,  p-value: 0.0008866

f:id:yoshida931:20201216181235p:plain

自由度 n=50, p=1 (単回帰なのでp=1となる)
Residual standard error(残差標準誤差)…でも、残差の「標準偏差」を意味している
  \sqrt{\frac{SSE}{自由度}}
Multiple R-squared (決定係数)
  R2= \frac{SSR}{SST}\

決定係数は説明変数の数が増えるほど1に近づくので自由度で調整
Adjusted R-squared(自由度調整済み決定係数)
  AR2=1- \frac{\frac{SSE}{n-p-1}}{\frac{SST}{n-1}}

F-statistic: 13.92 on 2 and 12 DF, p-value: 0.0007471
  MSR <- SSR/p
  MSE <- SSE/(n-p-1)
  F <- MSR/MSE    p-value=1-pf(F, p, n-p-1) ---> F分布から算出

分散分析表から求めることも可能

anova(reg2)

              Df Sum Sq Mean Sq F value    Pr(>F)    
I(pop15 - 10)  1 204.12  204.12  12.569 0.0008866 ***
Residuals     48 779.51   16.24          

SSR =  204.12     
MSR =  204.12 / 1 =  204.12   
SSE =  779.51
MSE =  779.51 / (50-1-1) = 16.24

回帰式から直接求める方法
注) reg1の係数を使用します

b0 <- reg1$coeff[1] #切片
b1 <- reg1$coeff[2] #傾き
yhat <- b0 + b1*dat$pop15 #推定値(srの推定値)
heikin <- mean(dat$sr) #=推定値の平均
SSE <- sum((dat$sr - yhat)^2)
SSR <- sum((yhat - heikin)^2)
SST <- sum((dat$sr - heikin)^2)