統計検定のための、Rの出力結果からわかること（回帰分析編）

この記事は [R アドベントカレンダー 2019](https://qiita.com/advent-calendar/2019/rlang)の17日目の記事です。

# はじめに
統計の学習を始めて知識は身についてきたけど、Rの出力結果の見方がわからない...。

そんなときに、いろいろと調べたことをまとめました。
昨日はWebで、先日行われた統計検定の合格発表がありました。過去問では、Rの出力結果を題材にした出題もあるので、これから統計の勉強をする方の参考になればと思います。
**出力結果を見ることがきっかけで、Rを使う方が増えてくれたら嬉しいです！**

# お題
出力例として「2018年の東京の桜の開花日を予測する」というテーマで、`summary`関数を使って回帰分析を行ったときの出力結果を使います。分析で使用するデータは以下とします。

- 目的変数は「桜の開花日」
- 説明変数は、1989年～2019年の３月上旬～中旬の「平均気温（℃）: temperature」、「降水量の合計（mm）: precipitation」、「日照時間の合計（時間）: daylight」
- 「桜の開花日」は3/31を「0」として、例えば4/1は「1」、3/25「-6」というように数値化


# 出力結果
回帰分析の結果を`summary`関数で出力すると、下記のようになりました。

```:出力結果
Residuals:
    Min      1Q  Median      3Q     Max 
-5.8787 -2.0533 -0.5716  2.4036  5.5094 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)   22.947413   5.712840   4.017 0.000447 ***
temperature   -2.566457   0.465537  -5.513 8.73e-06 ***
precipitation -0.008259   0.016964  -0.487 0.630435    
daylight      -0.050836   0.033417  -1.521 0.140268    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.207 on 26 degrees of freedom
Multiple R-squared:  0.5922,	Adjusted R-squared:  0.5451 
F-statistic: 12.58 on 3 and 26 DF,  p-value: 2.846e-05
```
以下、詳細を見ていきます。

# Residuals（残差）
```
Residuals:
    Min      1Q  Median      3Q     Max 
-5.8787 -2.0533 -0.5716  2.4036  5.5094
```

残差（予測値と観測値）の四分位数の数値。
四分位数とは、データを小さい順に並べたとき、四等分したときの区切りの値です。

項目|意味|説明|
---|---|---|
Max|最大値|最も大きい値|
3Q|第３四分位数|累積相対度数が75%|
Median|第２四分位数|累積相対度数が50%（中央値）|
1Q|第１四分位数|累積相対度数が25%|
Min|最小値|最も小さい値|

なお、四分位数での「範囲」とは、最大値から最小値を引いたもの。
「四分位範囲」とは、第３四分位数から第１四分位数を引いたものになります。


# Coefficients（係数）
```
Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)   22.947413   5.712840   4.017 0.000447 ***
temperature   -2.566457   0.465537  -5.513 8.73e-06 ***
precipitation -0.008259   0.016964  -0.487 0.630435    
daylight      -0.050836   0.033417  -1.521 0.140268 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
```

項目|意味|説明|
---|---|---|
Estimate|推定値|回帰モデル y=ax+bの「a」になる|
(Intercept)|切片（定数項）|回帰モデル y=ax+bの「b」になる|
Std. Error|標準誤差|Standard Errorの略。値が大きい場合は推定値の信頼性が怪しい。|
t value|t値|t検定の検定量|
Pr(>&#124;t&#124;)|p値|t値をp値に置き換えたもの|


## p値から推定値を検定
有意水準を両側5%とした場合、p値 < 0.05 であれば、推定値は統計的に有意です。
p値が0.05以下 → 推定値は統計的に有意 → 目的変数に影響を与えている
と言えます。

重回帰分析では、他の推定値の影響を除いた、それぞれの推定値（単体）の影響を表しています。

また、出力結果のp値は、t値をp値に置き換えたものです。t値の絶対値が大きくなれば、p値は小さくなります。

# Signif. codes（優位性）
```
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
```
「p値がどの範囲にあるか？」を記号で示しています。

検定の結果が有意である場合、p値の横に大きさに応じた「*」印が付きます。
印が１つの場合は、p値が0.01から0.05の範囲にあることを示しています。
（統計検定では出題の都合上、表記されていない場合もあります）

記号|p値が含まれる範囲|
---|---|
***|0〜0.001|
**|0.001〜0.01|
*|0.01〜0.05|
.|0.05〜0.1|
印なし|0.1〜1|

「*」印の数が多く、p値が小さいほど良いということになります。


# その他の項目
```
Residual standard error: 3.207 on 26 degrees of freedom
Multiple R-squared:  0.5922,	Adjusted R-squared:  0.5451 
F-statistic: 12.58 on 3 and 26 DF,  p-value: 2.846e-05
```

項目|意味|説明|
---|---|---|
Residual standard error|残差の標準誤差|残差のばらつき|
degrees of freedom|自由度|F検定の自由度|
Multiple R-squared|決定係数（寄与率）|単回帰分析の回帰モデルの精度を示す|
Adjusted R-squared|自由度修正済み決定係数|重回帰分析の回帰モデルの精度を示す|
F-statistic|F検定の統計量と自由度|統計量 on 自由度１ and 自由度２ で表記される。DFはdegrees of freedom（自由度）の略|
p-value|F検定のp値|F検定の統計量をp値に置き換えたもの|

## 決定係数と自由度修正済み決定係数
決定係数は「回帰モデルが、**どれだけ観測データに当てはまっているか？**」の精度を示しています。
0〜１の値をとり、１に近いほど良く当てはまっていると言えます。（推定値と観測値の差が小さい）
**予測の的中率を示すものではない**ので、注意しましょう。

決定係数には説明変数が増えるほど、値が大きなってしまう欠点があります。
そのため、**重回帰分析では自由度修正済み決定係数の値を使用します。**
回帰モデル同士の優劣を比較する場合にも使用します。

決定係数も自由度修正済み決定係数も、値に明確な基準はありませんが「0.5以上」を目安として使用する場合が多いようです。

## F検定
F-statisticの統計量の値は、帰無仮説と対立仮説を以下に設定した場合の、F検定の統計量となります。

- 帰無仮説：「切片を除く、全ての係数が0である」
- 対立仮説：「切片を除く、少なくとも１つの係数は0ではない」

「係数が0である」とは、回帰モデル y=ax+b の「a」が「0」で傾きがないことを示し、説明変数は目的変数には影響を与えないと解釈します。

p-valueは、F検定の統計量をp値に置き換えたものです。

有意水準を5%とした場合、p値 < 0.05 であれば、切片を除いた少なくとも１つの係数は0ではない。

帰無仮説が棄却されず、切片を除いた全ての係数が0であれば、回帰モデルの傾きは0。
そのため、切片を除く全ての係数は、目的変数に影響を与えていないことを意味します。

## 自由度と標本のサイズ
出力の例では、F検定の自由度は(3,26)。この26は標本のサイズから、係数の個数を引いたものになります。係数は切片を含む４つであるため、標本サイズは26+4で30となることがわかります。
なお、自由度はResidual standard errorからも26であるとわかります。

# おわりに
「回帰分析」と一括りにしてしまいましたが、単回帰分析と重回帰分析に分けた方が良かったかもしれません。。間違いや、「出力結果から、こんなこともわかる！」と言ったご指摘は歓迎です！
（随時、修正や追加も行えたらと思います）

近いうちに「分散分析編」もまとめる予定です。
また、今回は触れていない回帰分析の流れや手順などについてもまとめていきたいと思います。

追記：書きました。
[統計検定のための、Rの出力結果からわかること（分散分析編）](https://qiita.com/saka212/items/754635486c6be0e3100b)