【プログラマーのための統計学】分散と標準偏差と変動係数

## 目次
[プログラマーのための統計学 - 目次](http://qiita.com/Esfahan/items/bd9e52837bbaeb168b9f)


## 分散とは
以下のような、AとBのデータがあります。
どちらも、データの合計は15、平均は3となりますが、AとBのデータのばらつき具合は似ているとは言えません。

| A | B |
| --: | --: |
| 1 | 3 |
| 2 | 3 |
| 3 | 3 |
| 4 | 3 |
| 5 | 3 |

- 合計15
- 平均3

このようなデータのばらつきを調べるためには、分散というものを使います。

分散を理解するためには、偏差、平均偏差も理解しておく必要があります。
なので、分散の前に、その2つの説明をします。

## 偏差
偏差とは、平均値と各データの差を全て足したものの平均のことです。
前述の例の場合は、以下のようになります。

| A | 平均との差 | B | 平均との差 |
| --: | --: | --: | --: |
| 1 | 2 | 3 | 0 |
| 2 | 1 | 3 | 0 |
| 3 | 0 | 3 | 0 |
| 4 | -1 | 3 | 0 |
| 5 | -2 | 3 | 0 |
| 合計 | 0 | - | 0 |
| 平均 | 0 | - | 0 |

偏差の合計は必ず0となります。
よって、平均も0になってしまうので、偏差でデータのばらつきを調べることはできません。

## 平均偏差
平均偏差とは、平均値と各データの差の絶対値の合計の平均のことです。
前述の例の場合は、以下のようになります。

| A | 平均との差 | B | 平均との差 |
| --: | --: | --: | --: |
| 1 | 2 | 3 | 0 |
| 2 | 1 | 3 | 0 |
| 3 | 0 | 3 | 0 |
| 4 | 1 | 3 | 0 |
| 5 | 2 | 3 | 0 |
| 合計 | 6 | - | 0 |
| 平均 | 1.2 | - | 0 |

各データの差の絶対値の合計の平均なので、平均値は0以上になり、データのばらつき具合がわかります。ただ、全て絶対値に置き換えてから計算をしなければならないため、データ数が多くなった場合は面倒です。

## 分散
分散とは、平均値と各データの差を2乗したものの合計の平均のことです。

```math
V = 分散
```

```math
n = データ個数
```

```math
\bar{x} = 平均値
```

とすると、下記が成り立ちます。

```math
V = \frac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})^2
```

実際に計算してみます。

```math
2 =　\frac{1}{5} \{(1-3)^2 + (2-3)^2 + (3-3)^2 + (4-3)^2 + (5-3)^2\}
```

表で表すと

| A | 平均との差 | 平均との差の2乗 |
| --: | --: | --: |
| 1 | 2 | 4 |
| 2 | 1 | 1 |
| 3 | 0 | 0 |
| 4 | -1 | 1 |
| 5 | -2 | 4 |
| 合計 | 0 | 10 |
| 平均 | 0 | 分散値=2 |

| B | 平均との差 | 平均との差の2乗 |
| --: | --: | --: |
| 3 | 0 | 0 |
| 3 | 0 | 0 |
| 3 | 0 | 0 |
| 3 | 0 | 0 |
| 3 | 0 | 0 |
| 合計 | 0 | 0 |
| 平均 | 0 | 分散値=0 |

この場合のAの分散は、`2`、Bは `0` となります。

```math
V_A = 2
```

```math
V_B = 0
```

## 分散値から分かること
分散の値が小さいほど、各データは平均値に近く、ばらつきが少なく、値が大きければ、ばらつきも大きいということが分かります。
今回の例の分散は、Aは`2`、Bが`0`なので、Aの方がばらつきが大きいということになります。

## 標準偏差
標準偏差とは、分散と同じく、データのばらつきを示す指標ですが、
こちらは分散を平方根で計算したものになります。

### なぜ標準偏差が必要なのか
分散値は、各データを2乗してから算出しているため、
分散同士を比較することはできますが、分散と平均などを比較したり、計算することはできません。

例えば、単位にメートルが付いているデータの分散を出した場合、
単位も2乗されてしまうため、分散同士の比較や計算はできても、分散と平均などの比較、計算はできません。

元のデータの単位はメートルだが、

```math
m
```

分散はメートルの2乗のなってしまうため、

```math
m^2
```

元のデータや平均値と比較できない。

## 標準偏差の計算方法
そこで、分散に平方根を使うことで、2乗された単位も元に戻り、平均などと比較、計算ができるようになります。
以下の式で標準偏差を算出できます。

```math
\sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})^2}
```

実際に、Aのデータの標準偏差を計算してみます。
Aのデータは `1, 2, 3, 4, 5` で、平均値は `3` なので、標準偏差は以下の式で求められます。

```math
\sqrt{2} = \sqrt{\frac{1}{5} \{(1-3)^2 + (2-3)^2 + (3-3)^2 + (4-3)^2 + (5-3)^2\}} 
```

表で表すと

| A | 平均との差 | 平均との差の2乗 |
| --: | --: | --: |
| 1 | 2 | 4 |
| 2 | 1 | 1 |
| 3 | 0 | 0 |
| 4 | -1 | 1 |
| 5 | -2 | 4 |
| 合計 | 0 | 10 |
| 平均 | 0 | 分散値=2 |
| - | - | 標準偏差=√2|

解は `√2` となるので、標準偏差は、`約1.4` になります。
Bは計算するまでもなく、`0` となります。

つまり、

```math
\sigma_A \simeq 1.4
```

```math
\sigma_B = 0
```

となり、Aのほうがデータのばらつきが大きいことがわかります。

## 変動係数
標準偏差を平均値で割った値のことです。

### 例題
500mlのペットボトルの水と、車（同じ車種）をそれぞれの価格を、10店舗まわって調べ、
それぞれの価格が、店によってどのくらいのばらつきがあるのか調べてみました。
以下は、それらの平均と標準偏差をまとめた表です。

| 商品 | 平均価格(円) | 標準偏差(円) |
| --- | --: | --: |
| 水 | 89 | 9 |
| 車 | 3,136,500 | 284,869 |

車の方が圧倒的に標準偏差値が大きいので、車の価格の方がばらつきが大きいということになります。
ただし、水と車では単価が違いすぎるので、車の方が標準偏差が大きくなるのは当然であり、価格のばらつきの割合の比較にはなりません。

そこで、変動係数というものを使います。

## 変動係数の公式
変動係数を使うと、ばらつきを絶対値ではなく、相対値で比較することができます。
変動係数は、標準偏差を平均値で割ることで求められます。

式で表すと以下になります。

```math
CV = \frac{\sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})^2}}{\bar{x}}
```

実際に計算してみます。

| 商品 | 平均価格(円) | 標準偏差(円) |
| --- | --: | --: |
| 水 | 89 | 14 |
| 車 | 3,136,500 | 284,869 |

それぞれ、標準偏差を平均価格で割ります。
すると、

水の変動係数

```math
0.15 = 14 \div 89
```

車の変動係数

```math
0.09 = 284,869 \div 3,136,500
```

水の変動係数は`0.15`
車の変動係数は`0.09`

なので、水の価格の方が、相対的にはばらつきが大きいということがわかります。


以上

## 関連記事
https://qiita.com/Esfahan/items/b7261de0650ab3e7bbd3

## 参考
- [統計web - 分散](https://bellcurve.jp/statistics/course/5919.html)
- [統計web - 標準偏差](https://bellcurve.jp/statistics/course/5924.html)