ジェネレーター
Excelでの手作業なしにヒストグラムを作成したい場合は、ブラウザ上で動作するジェネレーターをご利用ください。データを貼り付けるだけで、度数分布表の作成からヒストグラムの生成・ダウンロードまでを即座に行えます。
ヒストグラム・層別ヒストグラムジェネレーター →前頁同様,スポーツクラブXの新会員の年齢データをもとにします。ただし,プロセスとしてはピボットテーブルにかわり,Frequency関数で度数分布表をつくる作業が主となります。
特に向いている利用シーン
- アドインの「分析ツール」が利用できない環境で,分析ツールと同じルールで作成したいとき
- 関数を直接入力して数式を組み立てる作業に慣れているユーザーが,ヒストグラムをつくるとき
Frequency関数による方法
最小値・最大値を確認します。具体的には下表の式で確認できます。
| D2 | =MIN( B2:B41 ) |
|---|---|
| E2 | =MAX( B2:B41 ) |
この場合,最小は18,最大は81であることがわかります。
階級幅を決定します。
先の最小値・最大値から,レンジ(範囲)は63であることがわかります。これをキリのよい数字,仮に10ずつに均等に区切って階級をつくっていくとしたら,柱の数は10を超えることもなく済みそうです。
このサイズのデータをもとにヒストグラムをつくることを考えると,10を超えない柱の数は相応だと考えられるので,階級幅にはそのまま10を採用して手続きを進めます。
下図のように「階級を範囲で定義」表と「度数分布表」の見出しを準備します。
この頁で目的とするところのヒストグラムの描画段階を"最終段階"と呼んだとき,前者の表が第1段階,後者のそれが第2段階に相当するものです。
ExcelでFrequency関数を使ってヒストグラムをつくる場合の仕様として,度数のカウントは,最初の階級は「x1以下」で,それ以外の階級は「xiを超える~xi+h以下(h:階級幅)」とする条件下でおこなわれる点は留意しておくべきでしょう。つまり,ここでの最小値の18を起点に10間隔で階級をつくると,値「18」のカウントは最初の階級で処理されることになります。これは他の階級と条件を同じとしない(18以上x以下)ので,場合によってはモヤモヤが残るところかもしれません。
したがって,気持ち的にもこのへんはスッキリしたいので,下方向にも若干の余裕を見て階級をつくっておこうと思います。ここで,この頁であつかう「年齢」といったデータの性格を考えると,表現のうえでも幸い10歳代,20歳代,30歳代,…とする区分を採ったほうが,なにぶん馴染むようにも感じられます。
これらの点をふまえて,最初の階級の「下」,ことばを替えれば階級の下限は10と設定することにしたいと思います。すなわち,最初の階級の「下」については,最小値を下回るキリのよい数字を充てるのがシンプルです(そのほか,たとえばFloor系関数で決めるなどしても)。
つづいて「上」については,原則としては先の「下」に「階級幅」を足し合わせ値をつくってやればよいわけですが,その場合,このケースに限っては都合の悪いことに「上」の値が20となってしまいます。つまり,Frequency関数の仕様からして10歳代,20歳代,30歳代,…とする区分には上手にハマらなくなってしまいます。
可視化を図る趣旨と照らして,ここで年齢は離散量ととらえられれば十分なので,上は19であれば狙った範囲で漏らさずキッカリとカウントも可能です。したがって,この列は次のように
- 「下」+「階級幅」-1
で計算したいと思います。
| E7 | =D7+G2-1 |
|---|
2つ目の階級を定義します。
下表のとおり「下」「上」に式を填め,両者を下方向にコピーします。どの程度コピーするか,具体的には,「上」列に「最高」値以上の値がはじめて登場する行までとします(レンジをカバーできる)。
| D8(下) | =D7+$G$2 |
|---|---|
| E8(上) | =D8+$G$2-1 |
セルD7を
- =SEQUENCE(8, 1, 10, G2)
として10から80までの等間隔(10)な値を8個用意したうえで,セルE7を
- =D7#+G2-1
とすればよりスマートに「下」「上」を用意できます。
後段のグラフの横軸に好適なラベルを表示させる用途から,いくつかのデータを準備していきます。
これは先に決めたとおり,形式としては10歳代,20歳代,…という表記でもよいわけですが,例として示す上ではいささかアドホックで汎用性に欠けるかもしれません。したがって,ここでは年齢以外の離散データを扱うときでも対応可能な,範囲の表示に代えたいと思います。
具体的には,最初の階級には「10-19」と表示することとします。
こうしたテキストをつくるため,下図の彩色したセルに
| G7 | =D7 & "-" & E7 |
|---|
と入力し,これを「階級を範囲で定義」表の最下行と同じ行までコピーします。
セルG7を
- =D7# & "-" & E7#
とすればスマートに作成できます。
度数をカウントし,結果を「度数分布表」に表示します。
具体的には,「度数分布表」のラベルの数と同じだけ,「度数」列の領域を選択し,
選択を維持したまま,Frequency関数の入力をはじめます。Frequency関数は引数として,次のデータ(ストリクトには配列)を要求します。
※「各階級の上限」に関しては,最後の階級を除外して指定します。これはFrequency関数の仕様です(Frequency関数 ―"Office")。
引数の指すところの具体的なセル範囲は,この頁の例で示せば下図のようになります。
この関数の結果は配列(先に選択した範囲すべてに出力)として戻ります。ゆえに,入力時に配列数式である旨指示する必要があります。具体的には,関数のすべての引数ともタイプを終えたら,Ctrl + Shift + Enter で数式を確定させる作業が必要です。
とまれ,Frequency関数によって度数は下図のとおり求めることができました。
ここで作業ミスがないかどうかの確認のため,総度数(度数の合計)とデータのサイズ(ここでは,人の数)が一致するかを,ステータスバーの情報などで確認しておくとよいかもしれません。
予めセル範囲H7:H14を選択しておく必要もなく,セルH7のみに
- =FREQUENCY(B2:B41, E7:E13)
とタイプします。このとき,確定はEnterキー単独で済ませます。
つづいて目的としたヒストグラムを描画します。
これはExcel標準の組み込みグラフ「棒グラフ」を素地としてつくります。
「度数分布表」,下図の領域を選択し,
挿入タブから集合縦棒グラフをシート上に挿入します。
これにより,下図のようなグラフが描かれます。
もっとも,この時点ではヒストグラムとひと目でわかるような外形的な特徴を揃えていません。
たとえば,柱を無間隔で並べることはその最たる要素のひとつかと思います。この処理の具体的な解説が必要な場合は,前頁を参照ください(当該箇所から表示されます)。
その他任意の書式の設定を適宜重ねて,ヒストグラムの完成です。
この場合,ラベルの表記(もちろん実際の階級上限の設定についても適切におこなっていることを前提として)を,たとえば下図のようにあらわすか,
あるいはグラフを見る人に多少の説明が必要になることもあるやもしれませんが,Excel 2016以降の新グラフのように数学記号であらわす等々の手段をとれば,連続量でも対応は可能です。
しかし判読の手間,言い換えればどこかストレートに目に入ってこない感は,やはり否定しがたいものがあります。それゆえグラフの読みやすさに注力できるリソースがあるならば,連続量をあつかう場合はことさら,ラベルを階級の直下でなくて,境界に表示する方式で処理していきたいところかと筆者自身は思います。