見出し画像

ヒストグラムの階級数の目安はスタージェスの公式で

 データをヒストグラムでいい具合に表現したいが、分け方が雑だと何のこっちゃよく分からん。細かすぎると凸凹してやはりよく分からん。いい具合の分け方はないものだろうか。

 そんなお悩みを解決するのが、スタージェスの公式というやつです。

スタージェスの公式とは

 階級数を$${k}$$、データ数を$${n}$$とすると、これでおおよそいい感じの階級数を割り出すことができます。

$$
k=1+\log_2{n} (スタージェスの公式 底2バージョン)
$$

例えば、データ数$${n}$$が$${2^{8}=256}$$くらいなら、$${k=1+\log_2{2^8}=1+8=9}$$くらいの階級数がいい感じになるようです。
以下のデータは、1024の乱数(0~1)から4ずつ平均をとった256個の数値をヒストグラムにしてみたものです。

256のデータを6分割
256のデータを9分割
256のデータを31分割

 うーん、6分割は確かに雑ですが、31分割もそんなに悪くない気が…。

 また、底を10にして常用対数で

$$
k=1+3.3\log_{10}{n} (スタージェスの公式 常用対数バージョン)
$$

とする流儀もありますが、これは要するに

$$
\log_2{n}=\dfrac{\log_{10}{n}}{\log_{10}{2}}\approx \dfrac{{\log_{10}{n}}}{0.301}\approx 3.3\log_{10}{n}
$$

としただけのことで、どちらも同じです。
(分からない人は、「対数の底の変換公式」で調べてみよう。)
ただ、数が1000とか10000とかの時は、例えば$${n=1000}$$なら$${k=1+3.3\log_{10}{1000}=1+3.3\times 3 \approx 11}$$と計算がし易いので常用対数バージョンがお勧めかも知れません。

スタージェスの公式の導出

 この式の考え方は、

  • グラフに凸凹もなく、大雑把にもならないためには、ヒストグラムがいい具合に正規分布っぽくなれば良い。

  • 正規分布っぽいのは、$${n}$$が大きいときの二項係数$${{}_n C_x}$$そのものだ。

  • それなら二項係数からデータ数を求めて、どの二項分布ならデータ数いくらが適正かを計算すればよい。

という発想です。

 まず、$${n}$$個のデータを$${k}$$分割してみます。
 その時、二項係数を積み上げた合計がデータ数に(大体)一致するようにします。
 注意が必要なのは、$${k}$$分割したとき、階級値の数字は0からk-1までのk個になることです。積み上げる数も$${{}_{k-1} C_0}$$から$${{}_{k-1} C_{k-1}}$$までとなります。要するにずれる訳です。
  下の図は、$${2^8=256}$$個ののデータを$${{{}_{8} C_0}=1}$$、$${{{}_{8} C_1}=8}$$、、、、と分けて積み上げたものです。

二項係数 256のデータを9分割

 計算してみよう。
 階級数が$${k}$$のときのデータ数$${n}$$は、

$$
\begin{align*}
n &= \sum_{x=0}^{k-1}{}_{k-1} C_x=(1+1)^n=2^{k-1} \\
n &= 2^{k-1}
\end{align*}
$$

両辺を底2で対数をとると

$$
\begin{align*}
\log_2{n} &=k-1 \\
k &=1+\log_2{n}
\end{align*}
$$

 導出完了。

この記事が気に入ったらサポートをしてみませんか?