次のグラフを見てください。一見すると、データが格子点上に「敷き詰められたように」プロットされているように見えます。でも、本当でしょうか?

ig_bivariate_histogram_1.png
Fig.1 格子点上のデータプロット

実はこのデータ、格子点上のデータではありますが、ものすごく重複しています。データは1000ポイントあるのですが、実際に「見える」ポイント数は400ポイント程度です。つまり、同じx,y座標を持つデータ点がたくさんあるため、同じ点に重ねて プロットされています。これでは、本当の意味でデータの分布はこの散布図からは確認できなくなってしまいます。

Fig.2 をご覧ください。このグラフは、Fig.1 と同じデータを用いて、同じx,y座標を持つ点の数を z方向にプロットしています。(x,y)=(0,0) 付近にたくさんのデータ点が重なっていることがわかります。

ig_bivariate_histogram_2.png
Fig.2 3D プロット

今回ご紹介するのは、 IGOR Pro でこういった2変数のデータを、頻度データに変換する手順です。

▼ 頻度データ(度数)

ここでいう頻度データ(度数)とは、ヒストグラムを描くときに用意するデータです。例えば、体重の分布を調べて、「50kg 以上 55kg 未満の人は5名」といったように、階級に区切ってデータ数を集計したデータです。1つのデータからヒストグラムを描くだけなら、IGOR Pro の 解析メニュー>ヒストグラム、でOKです。

しかし問題は、体重と身長の頻度データから、その分布の様子を検討しようとするような場合です。「体重が 50kg 以上、55kg 未満で、かつ、身長が 160cm 以上 165cm 未満の人は5名」といったデータの集計が必要になります。一度くらいなら、手で処理する方法もあると思いますが、やっぱり階級幅は2kg/2cm にしよう!と思った時には、また同じようなことを繰り返す必要があり、データ数によってはそれはもう多分悲劇です。

▼ 2変数のヒストグラム(Bivariate Histogram)

IGOR Pro にはこういったデータの集計を行うためのパッケージが用意されています(注)。プロシージャウィンドウを開いて、次の1行を冒頭に追加してください。

#include <Bivariate Histogram 2>

プロシージャをコンパイルすると、マクロメニューに Bivariate Histogram というメニューが追加されます。このプロシージャでは、このサブメニューに次の6つの項目が追加されます(注)。

  • Automatic Bins
  • Manual Bins
  • Bins From Existing Wave
  • Log Automatic Bins
  • Log Manual Bins
  • General Bins

Bins (階級区分)の設定方法が異なるであろうことは、名称から想像できる通りです。必要に応じて使い分けてください。


さて、冒頭の2つのデータは、データレンジが -3~3 で、0.2 刻みの、1000 ポイントのデータとなっています。最初の階級値を -3、階級幅を 0.2 と考えると階級数を 31 とすることで、ちょうどこのデータの頻度データ(度数)を得ることが可能ですね。

マクロメニュー>Bivariate Histogram>Automatic Bins を開くと次のようなウィンドウが表示されます(Fig.3)。

ig_bivariate_histogram_3.pngFig.3 Automatic Bins

Raw X Data Wave と Raw Y Data Wave のリストから元データを選択し、Number of X Bins およびNumber of Y Bins のボックスにそれぞれ 31 を指定して 続行 ボタンをクリックすると、Name for new histogram matrix wave のボックスで指定した名称(既定は BivariateHistWave)で、31x31 の2次元のウェーブが生成されます。

得られたウェーブをイメージプロットとして表示させると、Fig.4 のようなプロットが得られます。中央付近に分布が集中していることがわかります。このデータをさらに triplet に変換して 3D プロットにしたものが、冒頭の Fig.2 となります。

ig_bivariate_histogram_4.png
Fig.4 2変数から得られた頻度データ(イメージプロット)

▼ さらに

今回のデータのようにデータレンジが狭い場合、階級の設定方法は簡単ですが、これが数桁のオーダーに渡って分布するようなデータであった場合(Fig.5 左)、Bivariate Histogram の Log Automatic Bins が役に立ちます。階級の幅を、ログスケールのグラフで均等に見えるように分割してくれます(Fig.5 →)。(もちろん、この時、階級の幅は均一ではありません。)

ig_bivariate_histogram_5.pngig_bivariate_histogram_6.png
Fig.5 ログスケールの頻度データ


▼ まとめ

今回は、IGOR Pro に付属している Bivariate Histogram 2 というパッケージを使って、2つのデータから、頻度データを作成する手順を紹介しました。IGOR Pro にはこれ以外にも多彩なパッケージが用意されていますので、ぜひお試しください。


注:本記事は、IGOR Pro 6.12AJ を前提にしています。


井上@技術部でした。


※この記事の内容は執筆者の個人的見解で、ヒューリンクスによる公式情報ではありません。[免責事項]

トラックバック

この記事へのトラックバックURL
http://blog.hulinks.co.jp/cgi/mt/mt-tb.cgi/421
内容に対しての関連性がみられないものは削除する場合があります

HULINKS サイトの新着情報