元データ
ある月の取扱商品の売上(万円)を個人別に集計したものです。売上はすべて 1 万円単位で、端数は生じないものとします。
概念を理解する
このページでは 2 種の成果物を目的とします。横軸の違いに注目し、Type A:境界値型、Type B:中心値型と呼びます。
このページ限りの用語です。
棒の部分を bin(ビン)または 柱 と呼び、対応する横軸上の区画を 階級 と呼びます。左から順に「第 1 階級」「第 2 階級」……と呼びます。
階級と階級の境目を 境界、その値を 境界値 と呼びます。ある階級に注目したとき、下方側を 下境界値、上方側を 上境界値 といい、その差を 階級の幅 と呼びます。
第 5 階級の幅は 60 − 50 = 10。すべての階級で幅を等しくすることが望まれます。
不等間隔にすると、度数=棒の高さという単純な読み方が崩れます。経済分野では意図的に不等間隔を用いるケースもあります。
「境界上の値はどちらの bin に入るのか」という問題を事前に解消しておく必要があります。
- 下境界値 = 階級下限(境界上の値は右の bin に入る)
- 上境界値 = 階級上限(境界上の値は左の bin に入る)
どちらが正しいわけではなく、どちらを選んだかを把握していることが重要です。このページでは 下境界値 = 階級下限 の仕様で進めます。
階級の幅がすべて等しいとき、柱の高さが 度数(頻度) を意味します。第 5 階級の度数が 7 であれば、売上が 50〜59 万円の人が 7 人いることを示します。
ヒストグラムを作るにあたって決めることは主に 3 つです。
階級の幅をいくつにするか
階級幅を決めることと bin の数を決めることは表裏一体。どちらも唯一の正解はないが、算出の出発点として3つのアルゴリズムが知られている。
階級幅の選択はグラフ作成者に委ねられ、正解が存在しません。しかしそれがヒストグラムの形状を大きく左右するファクターになるのが難しいところです。下のスライダーで bin 数を変えると、その影響を確認できます。
このデータには 2 つの山が潜んでいます。その存在を伝えるにはどの bin 数が適切か——そうした判断が主観に大きく依存することを体感できるかと思います。
「感覚」とは別に、先人たちが試行錯誤してきた 3 つのアルゴリズムを紹介します。複数の候補値を比較できる状態の方が判断しやすいです。
- 平方根選択
- スタージェスの公式
- スコットのルール
まず MIN・MAX と Range(範囲)を求めておきます。
- F2=MIN(D2:D25)
- G2=MAX(D2:D25)
- H2=G2-F2
平方根選択(Square-root choice)
サイズを $n$ としたとき、bin 数 $k$ を求めてから階級幅 $h$ を計算します。
$$k = \sqrt{n}, \qquad h = \frac{\rm{Range}}{k}$$
- G6=SQRT(COUNT(D2:D25))
- H6=H2/G6
スタージェスの公式(Sturges' formula)
$$k = \log_2 n + 1, \qquad h = \frac{\rm{Range}}{k}$$
- G7=LOG(COUNT(D2:D25), 2) + 1
- H7=H2/G7
スコットのルール(Scott's normal reference rule)
直接 $h$ を求めます。
$$h = \frac{3.5\sigma}{n^{1/3}}$$
- H8=3.5 * STDEV.P(D2:D25) / COUNT(D2:D25)^(1/3)
求めた階級幅を適用する際の落とし穴
仮に平方根選択の $h$(13.2681……)をそのまま適用すると——
各階級で観測値のカウントが揃わない「歯抜け(くし状)」のヒストグラムが生じます。離散量を扱うときの典型的な落とし穴です。
求めた階級幅を丸める
回避策として、$h$ を 測定単位の整数倍 で丸めます。この例の売上は端数が発生しないので測定単位は 1 万円です。
- I21
キーナンバー 1, 2, 5, 10 を用意し、それらと測定単位と掛け合わせた候補値を用意します。
- I5=$I$2 * I4
- I5=I2 * I4:L4
さらに $h$ の常用対数を使って候補値を精査します。
- I6=I$5 * POWER(10, INT(LOG10($H6)))
- I6=I5# * POWER(10, INT(LOG10(H6:H8)))
各アルゴリズムの $h$ に近い値を探します。この例では平方根・スタージェスなら 10、スコットなら 20 が妥当な候補です。
Range が 65 なので $h=10$ で bin が約 7 本、$h=20$ で約 4 本となります。分布表現の観点から、ここでは $h=10$ を選択します。
以降の計算ではセル I16 の平方根の結果を参照します。
キーナンバー「1, 2, 5, 10」でよい値が見つからなかった場合(測定単位がより小さいか,より大きい場合)、 20, 50, 100, ... あるいは ..., 0.1, 0.2, 0.5 といった感じにオリジナルのキーナンバーを$10^𝑑$ 倍しながら前後にスコープを拡げ,探索を繰り返します($𝑑$: 0を初期値にインクリメント、 あるいはデクリメント)。また、面倒なことを抜きに測定単位から$𝑑$の見当を直接つける場合、 キーナンバーを配列数式,またはスピルで I4:L4 ={1,2,5,10}*POWER(10,-INT(LOG10(I2))) と置き換えます。
第 1 階級の下境界値を決め、階級を定義する
階級をどこから始めるかも、ヒストグラムの形状に影響します。下境界を少しずらすだけで印象が大きく変わります。
明確な意図がない場合は、ラベルが読みやすい(キリのよい)値になるよう選ぶのが実務的には妥当です。
- F11=FLOOR.MATH(F2, I6)
MIN より低く、最も近い $h$ の倍数を第 1 階級の下境界として使います。
分析ツールに渡すための階級表を作ります。見出しとして「階級名」「下境界」「上境界」「上境界−u/2」を用意します。
1 番目の階級の下境界・上境界を求めます。
- F14第1階級
- G14=IF(COUNTA($F$14:F14)=1,$F$11,H13)
- H14=G14+$I$6
上境界が MAX を超えるまでの数を計算し、スピルで下境界・上境界を一括生成します。
- G14=IF(((G2-F11)/I6)-QUOTIENT(G2-F11,I6)<>0, SEQUENCE(ROUNDUP((G2-F11)/I6,0), 1, F11, I6), SEQUENCE(ROUNDUP((G2-F11)/I6,0)+1, 1, F11, I6))
- H14=G14#+I6
- F14="第" & SEQUENCE(ROUNDUP((G2-F11)/I6,0), 1) & "階級"
次に、「上境界 − u/2」列を作ります。これは分析ツールが 「ある値以下」 でカウントを行うため、境界上の値を含まない閾を設定する工夫です。
- I14=H14-$I$2/2
F14:I14 を「上境界」が MAX をカバーするまでコピーします。
I14 以下をスピルで埋めます。
- I14=H14#-I2/2
なお最後の階級の直前で上境界値=MAX が成立した場合、その階級の「上境界−u/2」を上境界値と同じ値に書き換えて最後の階級と統合することがあります。
100 点満点のテストの得点分布を 10 本の bin で見る場合が好例。
分析ツールを走らせる
データ タブ → 分析 グループの データ分析 をクリックします。
ボタンが表示されていない場合、「分析ツール」アドインのインストールが必要です(分析ツールを読み込む — "Office")。
データ分析 ダイアログで ヒストグラム を選択して OK。
入力範囲・データ区間・出力先 を指定します。見出しも選択している場合は ラベル にチェックを入れます。
度数分布表が得られました。目的のヒストグラムはこの表をソースとして描きます。
グラフ化のため、見出し部分を消去し「下境界」列の値で上書きします。
- F23(削除)
- F24=G14
見出しとその直下の値をすべて消去し、「下境界」列の値を転記します。
- F23:F31(削除)
- F24=G14#
「最大頻度」もあわせて計算しておきます。
- H23最大頻度
- H24=MAX(G24:G31)
グラフ化
境界値型
「次の級」を除く見出しを含む度数分布表を選択し……
挿入 タブ → グラフ グループの 縦棒/横棒グラフの挿入 → 集合縦棒。
書式 タブ → 現在の選択範囲 から 頻度 系列を選択し、選択対象の書式設定 で 要素の間隔 を 0%・使用する軸 を 第 2 軸 に設定します。
グラフのデザイン タブ → グラフの種類の変更 で、最大頻度 系列を 直線(散布図) に変更します。
横(値)軸の書式設定で以下を設定します。
- 最小値:第 1 階級の下境界値
- 最大値:最後の階級の上境界値
- 主:$h$ の整数倍(基本は 1 倍)
さらに目盛線(目盛の種類 → 外向き)を設定し、第 2 縦軸は ラベルの位置 を なし にして不可視にします。
境界値型ヒストグラムの完成です。
「20 ってどの棒に入るの?」——発表の場でこれを聞かれることがある。下境界値=階級下限の仕様なら、20 は 20〜29 の bin に入ると答えられる。仕様を把握していることが大切。
中心値型への転換
「中心値」は階級を代表する値のひとつで、下境界と上境界の中間値です(第 5 階級なら (50+60)/2 = 55)。以下、横軸を中心値型に転換する工程です。
グラフの種類の変更 から 頻度 系列と 最大頻度 系列の第 2 軸を入れ替えます。中心値型では 最大頻度 側を第 2 軸にします。
グラフのデザイン タブ → グラフの要素の追加 → 軸 → 第 2 横軸 を追加します。
第 2 軸 横(値)軸の書式設定で以下を設定します。
- 最小値:第 1 階級の下境界値 $- h/2$
- 最大値:最後の階級の上境界値 $+ h/2$
- 主:$h$ の整数倍
ラベルの位置 を 下端/左端 に設定し、元の横(値)軸は ラベルの位置 を なし にして不可視にします。
中心値型ヒストグラムの完成です。