見出し画像

第143回: 「統計の実務」4 ヒストグラム


◀前の記事へ   次の記事へ▶

≡ はじめに

前回は、RとRコマンダーで描けるグラフの一つとして、「インデックスプロット」について取り上げました。インデックスプロットは単独ではあまり見ませんが、折れ線グラフの背景になっていたり、例えば心拍数のグラフといった、時系列の変化をとりあえずグラフにして見せようというときに使われています。

今回はグラフの第2弾として「ヒストグラム」について説明します。

ヒストグラムは「QC七つ道具」の一つです。QC七つ道具とは、“品質管理において、数値データを整理および解析し、現象を定量的に分析するために用いる基本的で重要な七つの技法”のことです。(SQuBOK V3 p. 227より)

「QC七つ道具」には、「特性要因図」、「パレート図」、「チェックシート」、「ヒストグラム」、「散布図」、「管理図」、「グラフ」、「層別」があります。
「あれ? QC七つ道具といいながら8つあるではないか!?」とお気づきの方、するどい観察眼をお持ちです。「単に語呂合わせなので、【七】にはこだわらないで良い」とされています。

そんなことを言われても、気になりますよね。(そういえば、「弁慶の七つ道具」も、その種類は一定しないんですよね)
七にこだわりたい人は、「管理図」と「グラフ」をまとめて「グラフ・管理図」とするか、「層別は技法ではなく、データを扱うときの共通の考え方としてQC七つ道具から除く」としているようです。(私は層別を別格扱いにしています。管理図と(折れ線)グラフを一緒にしてほしくないからです。また、層別はQC七つ道具全体に匹敵するくらい強力だからです。管理図については超重要な統計手法なので、いずれ書く予定です。)
いずれにしても、今回の「ヒストグラム」はQC七つ道具のなかでも独立した重要な道具として位置付けられています。


≡ ヒストグラムの使いどころ

ヒストグラムは、「データの分布状況を視覚的に認識する」ことを目的としています。具体的に見ていきましょう。

こちらは、前回の「インデックスプロット」です。

インデックスプロットは、時系列(登録順)にデータをグラフ化しただけのもので「グラフ作成者の意図がほとんど入り込まないところが好き」と前回書きました。

インデックスプロット

こちらと同じデータを「ヒストグラム」で描くとこうなります。見た目の印象が全く違いますよね。

ヒストグラム・キャッチイメージ

Rコマンダーの使い方は前回と同じ要領です。ヒストグラムのオプションタブで縦軸を頻度からパーセントや密度に変えることもできますが、使うことはないでしょう。

Rコマンダーでは「頻度」という書き方をしていますが、統計の世界ではfrequencyを「度数」と訳すことが多いです。
「度数」は「ある階級に入るデータの数」と同じ意味です。
そうすると今度は「階級」という用語が気になるかもしれません。「階級」は「度数を集計するための区間」です。
ヒストグラムでいえば、「度数が棒の高さ」で「階級がそれぞれの棒」に対応することが分かればOKです。

画像3

オプションの「区間の数」は、たまに設定することがあります。

上の例では自動で14の区間に分けて、区間ごとのデータ数(度数)をカウントしています。思い切って、区間の数を50にしてみましょう。

画像4

区間の数が多ければ分布の特徴がより良くつかめるというものではないことがお判りいただけたかと思います。

実用上は、Rコマンダーが作ったヒストグラム(自動で作られる区間の数)を使うのが良いと思います。
そもそも、区間の数に最適解はありません

学校の授業で、「区間数は、√nとする。nはデータ数」と習った人がいるかもしれません。例えば、データ数が100なら、「√(100) = 10」なので、区間の10個に区切ろう、そうしたら各区間に平均10個のデータが入るからあとは分布によって凸凹していい感じになるだろう、、、というわけです。
「√」は、正方形をイメージしていただけると良いと思います。ただし、こちらの方法には、データ数が多くなると√nでは区間数が多くなりすぎるという弱点があります。例えば、今回の603個のデータですら、√(603) は24.6ですから、上のヒストグラムよりも10区間も増えてしまいます。
1万のデータがあれば100区間です。「人間は10個以内の区間数が認知しやすい」という研究結果があるそうです。100区間は多すぎです。
そこで、いろいろな区間数の算出方法が研究されてきました。
Rコマンダーでは、「breaks="Sturges"」と指定しているので、“スタージェスの公式”を使用していることがわかります。

良く知られたスタージェスの公式(下記の数式)は、データ数のみを引数とするのですが、Rのnclass.Sturges関数はデータそのものを引数にしています。また、下記の式とは微妙に違う値になっています。(今回のデータ数603を入れたら、(LOG(603, 2)は、9.24くらいなのでそれに1を加えて)切り上げても11なのに、14区間となっています)
おそらく、スタージェスの公式の改良版アルゴリズムを使っているのでしょう。これ以上はRの出力を鵜呑みにするという本noteのコンセプトから外れてしまうので、興味のある方はRのソースコードにあたってください。

画像5

上は、スタージェスの公式で、kは、区間数、Nはデータ数です。ところで、今回は、√nとか、logといった数式が出てしまってすみません。数式は極力出さない方針なのですが、今回は、数式があった方が分かりやすいかなと思いました。もちろんわからなくても実務に支障はありませんので、ご安心ください。
この公式を用いれば、通常のデータ数であれば、区間数は、7~15くらいに収まります。先ほどの1万をNに入れても区間数kは、14.3です。

カメラの輝度の分布などを表示するヒストグラムの区間数は256みたいです。


Rコマンダーでお試しの方は、すでに、お気づきと思いますが、作ったグラフはRの[ファイル]メニューから様々なフォーマットの画像ファイルで保存できます。(Rコマンダーのメニューではない点にご注意ください。すぐに慣れますが)

PNG形式が劣化がなく、サイズも小さいのでお勧めですが、書籍や論文と言った高精細なグラフが欲しいときにはベクター形式のMetafileやPostScriptが良いです。一時的な利用なら「クリップボードにコピー」が便利です。

画像13

グラフを表示しているディスプレイ上のビューの縦横比のまま画像ファイルができますので、そこは気を使った方が良いかもしれません。

画像15

こちらは、同じデータのヒストグラムですが、ちょっと縦横比が違うだけで横軸の目盛りに数字が省略されています。


≡ ヒストグラムの読み方

基本は、山の形を見ます。

一番良くみる山の形は、正規分布です。ちょっとシミュレーションしてみましょう。(シミュレーションはRコマンダーで行いましたが、その話は分布の説明の時にします)

まずは、10回コインを投げて表が出る数の確率分布シミュレーション結果のヒストグラムです。

画像6

正規分布には見えません。回数を100回に増やしてみます。

画像7

ちょっと正規分布っぽい感じになってきました。1000回に増やしてみましょう。

画像8

なんとなく、正規分布っぽく見えてきました。10000回に増やしてみます。

画像9

1000回とそんなに変わらない印象です。区間数が10なのでそうみえるのでしょう。

これでは、わかりにくいので、N=100万で、区間数を強制的に100にしてみました。

画像10

誰が見ても、正規分布にしか見えません。(コイントスの結果の分布は、正確には二項分布と言います。)

このように正規分布に見えるようにするためには区間数を増やす必要があります。逆に言うと、10個程度の区間数のヒストグラムの形から“こいつは正規分布をしている”と決めつけるのは非常に危険です。
統計的に、正規分布かどうか判定するためには、次々回に説明する“QQプロット”グラフを使うか、正規分布の検定をします。

日本の書籍では、正規分布の形を「釣り鐘型」と書くことが多いのですが、上のグラフは、お寺の釣り鐘には見えません。
“bell curve”を「釣鐘曲線」と訳した名残だと思います。
大晦日に打つ除夜の鐘ではなく、西洋式の鐘を思い出してください。次の写真は長崎の平和公園にある「長崎の鐘」です。正規分布の形に似ています。

画像11


正規分布の釣り鐘型の次に見るのは、こんな形です。

画像12


片側にビタッと寄せた形です。例えば、プロダクト別重要品質問題発生数といった、「マイナスはあり得ず、0件か、せいぜい数件しか発生しないような事象」について集めたデータ(もう少し正確に書けば“平均値が一桁のポアソン分布に則るデータ”など)をヒストグラムにすると、このような形になります。

上の方で、logという数式?が出てしまったので、ついでに書きます。
このような片寄りがあるヒストグラムの時は、データの下処理として横軸を対数変換しておくことがあります。これを “対数軸変換”と呼びます。
対数軸変換をすることで、規模や工数といった掛け算で効いてくる変数の影響を無くし、正規分布のような釣り鐘型の形にするわけです。
「ポアソン分布の回帰式の前処理」でよく使われますし、一般化線型モデルでは、変数の前処理に対数変換をするのは普通です。

以上、豆知識でした。
知らなくても問題にはなりませんが、知っていると、こういう統計処理を見たときに心に余裕ができます。(笑)

他には山の数が複数あるようなら、複数の原因を疑って層別して山ごとの元データの特徴を分析します。

層別をするための下準備として、クロス集計をして独立性のカイ二乗検定を行うと良いです。クロス集計とカイ二乗検定の話は、この連載にもそのうち出てきます。

そのほかにも、高原型や歯抜け型など知られていますが、どれも工場の生産管理の時に見られる分布なのでソフトウェア関係で得られたヒストグラムには関係ないかと思います。

取り敢えずは、正規分布と、片寄りと、二山だけ覚えておけば問題ありません。


≡ おわりに

今回は、ヒストグラムの話をしました。「データの分布状況を視覚的に認識する」には、ヒストグラムが最適です。

次回は、みんな大好き、「箱ひげ図」を取り上げます。(私が箱ひげ図を使うようになったのは、野中誠先生の発表で見てからなので10年位前からかなあ)

◀前の記事へ   次の記事へ▶

いいなと思ったら応援しよう!