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

# はじめに
今回は[「回帰分析編」](https://qiita.com/saka212/items/8c74854171775e5d5273)の続編で分散分析編（**一元配置分散分析**）です。
Rの出力結果と分散分析表の見方、分散分析で使うF分析についてまとめています。

# お題
平成24年の生しいたけの生産量を地域ごとに整理。（単位：t）
「生産量は地域ごとに差があるといえるかどうか？」を分散分析で考察します。
使用するデータは以下とします。

- 47都道府県を、北海道/東北・関東・中部・近畿・中国・四国・九州/沖縄の７地域に分類。
- 出典：総務省「日本の統計2015」（[http://www.stat.go.jp/naruhodo/c1data/06_09_stt.html](http://www.stat.go.jp/naruhodo/c1data/06_09_stt.html)）

||1|2|3|4|5|6|7|8|9|
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
|北海道 / 東北|7963|284|5093|752|3112|1255|1285|||
|関東|687|2439|3966|933|533|245|271|||
|中部|2285|1207|911|257|180|879|1875|1517|731|
|近畿|895|485|229|142|1094|402|1084|||
|中国|189|1918|1082|949|148|||||
|四国|8154|343|585|432||||||
|九州 / 沖縄|682|95|3399|1100|1481|1871|1048|11||


# 分散分析の予備知識
出力結果を見る前に、分散分析の用語と考え方を簡単に整理しておきましょう。

## 用語
分散分析に出てくる用語、**因子**と**水準**についてまとめておきます。

|用語|意味|このデータでは|
|---|---|---|
|因子|データの値に影響を与える要因|「地域」が該当し、因子数は１|
|水準|因子の種類|「北海道/東北」「関東」「中部」「近畿」「中国」「四国」「九州/沖縄」が該当し、水準数は７|

データの値に影響を与える因子が１つの場合の分散分析を、**一元配置分散分析**と呼びます。
因子が２つであれば、二元配置分散分析。３つ以上では、多元配置分散分析と呼びます。

なお、出力結果に「**Residuals（残差）**」という項目があります。
回帰分析でも登場しますが、誤解を恐れずに言えば、分散分析では偶然性（誤差）を示す値として意識しておくと理解が進むかと思います。

## 考え方
今回のデータをから考えられることは、次のどちらかです。

- 生産量に「地域」ごとの差はありそうだ。（**水準間による差がある**）
- 生産量の差があるのは偶然であり、地域ごとの差があるとは言えない。（**残差による差であるとは言えない**）

その判断を行うための方法が分散分析です。（F分布による検定）
このデータでは「水準間の差が偶然性を示す残差より大きければ」地域による差がある。と判断できます。


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

```:出力結果
Analysis of Variance Table

Response: production
          Df    Sum Sq Mean Sq F value Pr(>F)
area       6  24898858 4149810  1.3977 0.2394
Residuals 40 118760199 2969005   
```

分散分析表に当てはめると次のようになります。

||平方和|自由度|平方平均|F値|Pr(>F)<br>（F検定のp値）|
|---|---|---|---|---|---|
|地域|24898858|6|4149810|1.3977|0.2394|
|残差|118760199|40|2969005|||

統計検定の出題では、Rの出力結果ではなく、分散分析表で出題される場合もあります。
Rの出力結果と分散分析表の両方の見方を確認しておくと良いです。

以下、詳細を見ていきます。

## Df（自由度）

||算出方法|出力例では|
|---|---|---|
|水準間の自由度|水準数 − 1|7 − 1 ＝ 6（地域数 − 1）|
|残差の自由度|データ数 − 水準数|47 − 7 ＝ 40|

なお、２つの自由度より「**出力結果には無いデータ数**」が47であることもわかります。
算出方法は逆算の「**水準間の自由度 + 残差の自由度 ＋ 1**」です。

## Sum Sq（平方和）
平方和からは「**データの標本分散（不偏分散）**」がわかります。

||算出方法|出力例では|
|---|---|---|
|データの標本分散<br>（不偏分散）|全平方和 ÷ (データ数 − 1)|36774877 ÷ (47 - 1) ＝ 799453.8478|

「**全平方和**」は下記で算出します。

||算出方法|出力例では（areaのSum Sq ÷ ResidualsのSum Sq）|
|---|---|---|
|全平方和|水準間平方和 + 残差平方和|24898858 + 11876019 ＝ 36774877|

## Mean Sq（平方平均）
平方和 ÷ 自由度 で算出される値です。

||算出方法 |出力例では（Sum Sq ÷ Df）|
|---|---|---|
|水準間の平方平均|水準間の平方和 ÷ 自由度|24898858 ÷ 6 ＝ 4149810|
|残差の平方平均|残差の平方和 ÷ 自由度|118760199 ÷  40 ＝ 2969005|

## F value（F値）
水準間の平方平均を残差の平方平均で割ることで算出される値です。

||算出方法|出力例では（areaのMean Sq ÷ ResidualsのMean Sq）|
|---|---|---|
|F値|水準間の平方平均 ÷ 残差の平方平均|4149810 ÷ 2969005 ＝ 1.3977|

この値はF検定のF値として扱います。

## Pr(>F)（F検定のP値）
Pr(>F)は、F検定統計量のF値をp値に置き換えたものです。
F検定のp値として扱います。


# F検定
分散分析ではF分布によるF検定を行います。

## Pr(>F)（F検定のP値）を使ったF検定
想定する仮説は

- 帰無仮説：「すべての水準間で母平均が等しい」
- 対立仮説：「少なくとも1組の水準間で母平均が異なる」

であり、今回のお題では下記のようになります。

- 帰無仮説：「各地域の生産量の平均は等しい」
- 対立仮説：「少なくとも１つの地域で生産量の平均は、他の地域の平均と異なる」

F検定の有意水準を5%とした場合、`p値 < 0.05`であれば帰無仮説は棄却され、対立仮説が採択されます。
また対立仮説の採択で「**少なくとも１地域で生産量の平均の95%の信頼区間は他の地域と重なりがない**」こともわかります。

出力例では、0.2394 > 0.05で帰無仮説は棄却されず、「各地域の生産量の平均は等しい」となり、「生産量の差があるのは偶然であり、地域ごとの差があるとは言えない」と判断します。

## F value（F値）を使ったF検定
F値を使ったでも想定する仮説や解釈は、Pr(>F)（F検定のP値）を使ったF検定と同じです。

違いはF検定の有意水準を5%とした場合、`F値 > F分布上側5%の値`であれば帰無仮説は棄却され、対立仮説が採択されます。

出力例では、自由度（6,40）のF分布上側5%の値を確認し、1.3977 < 2.421 となるので帰無仮説は棄却されず、「各地域の生産量の平均は等しい」となり、「生産量の差があるのは偶然であり、地域ごとの差があるとは言えない」と判断します。


# おわりに
分散分析は計算が面倒なので、Rの`anova関数`で結果が出力できるのは助かります。
ひとまず、まとめておきたいことは一通り書けたとは思いますが、間違いや加筆できる内容があれば、随時更新していきます。

また、お時間のある方は[「統計検定のための、Rの出力結果からわかること（回帰分析編）」](https://qiita.com/saka212/items/8c74854171775e5d5273)もお読みいただけますと幸いです。