MATLAB

【MATLAB】box plot で箱ひげ図を作成する

箱ひげ図(box plot)とは

データ分析を扱う上で保有しているデータがどういう分布になっているかを理解することはとても大事です。そうしたときに役に立つデータの可視化方法の一つが箱ひげ図です。箱ひげ図はこのような形をしています。この中には,最小値,最大値,中央値,第一四分位数,第三四分位数,外れ値の情報を含みます。

それぞれについて簡単に説明します。

  • 中央値:データを小さい順に並べたときにちょうど中央(50%)の位置にくる値
  • 第一四分位数:データを小さい順に並べたときに25%の位置にくる値
  • 第三四分位数:データを小さい順に並べたときに75%の位置にくる値
  • 最小値:第一四分位数 - 1.5 × IQR より大きい最小値 ※IQR = 第三四分位数 - 第一四分位数
  • 最大値:第三四分位数 + 1.5 × IQR より小さい最大値 ※IQR = 第三四分位数 - 第一四分位数
  • 外れ値:最小値よりも小さいまたは最大値よりも大きい値

MATLABでbox plot関数を使用して箱ひげ図を作成する

MATLABで箱ひげ図を作成するには,boxplot 関数を使用します。MATLABに格納されている気温のデモデータを使用して作成していきます。引数に表示したいデータを入れてあげれば箱ひげ図を作成することができます。

% データ読み込み
T = readtable('TemperatureData.csv');

% 気温データの可視化
figure()
boxplot(T.TemperatureF)
ylabel('Temperature [°F]')
MATLAB

実行結果

グループごとに箱ひげ図を作成する

このデータセットは,2015年と2016年の日次の気温データが収録されています。日々の気温の分布を月ごとに比較してみることにします。グループごとにデータを比較したい場合は,第一引数に比較したい変数,第二引数にグループのカラムを指定すれば,グループごとの箱ひげ図を作成することができます。第一引数にTemperature,第二引数にMonthを指定してプロットを作成します。

% 月ごとのデータを可視化
figure()
boxplot(T.TemperatureF,T.Month)
ylabel('Temperature [°F]')
xlabel('Month')
MATLAB

実行結果

月ごとの気温の分布を可視化することができました。

ノッチのあるbox plotを作成する

データを比較する際にそのデータ同士に有意な差があるのかどうかをパッと把握したい場合があります。そんな時はノッチの機能を使用すると便利です。MATLABのboxplotではノッチ部分が互いに重なっていなければ,両者のデータ群には5%水準の有意な差があることを示します。ノッチの端は q2-1.57(q3-q1)/sqrt(n) および q2+1.57(q3-q1)/sqrt(n) で定義されます。ここでq2は中央値,q1は第一四分位数,q3は第三四分位数,nはNaNを除いたデータ数です。先ほどの月ごとの気温データを比較して,ノッチを付けてみます。

% 月ごとのデータを可視化(Notchあり)
figure()
boxplot(T.TemperatureF,T.Month,"Notch","on")
ylabel('Temperature [°F]')
xlabel('Month')
MATLAB

実行結果

中央値のあたりがくびれてノッチがつきました。例えば,March(3月)とApril(4月)のデータを比較してみると,くびれているノッチ部分は重ならないことがわかります。これはつまり,3月と4月の気温には5%水準で有意な差があるということを意味します。一方でJuly(7月)とAugust(8月)とではノッチでくびれている部分が互いに重なっており,両者には有意な差がないということが表現されている箱ひげ図ということになります。

外れ値を非表示にする

外れ値が極端に飛んでいてプロットの全体像が把握しにくい場合などは,外れ値を非表示にすることもできます。先ほどの月ごとのデータから外れ値を非表示にしてみます。

% 月ごとのデータを可視化(Notchあり,外れ値非表示)
figure()
boxplot(T.TemperatureF,T.Month,"Notch","on",Symbol='')
ylabel('Temperature [°F]')
xlabel('Month')
MATLAB

実行結果

まとめ

箱ひげ図の概要とMATLABでの作成方法を紹介しました。

  • 箱ひげ図(box plot)は,データの分布を理解するために有用な可視化方法
  • 最大値,最小値,中央値,第一四分位数,第三四分位数,外れ値の情報を含む
  • MATLABでグループごとの箱ひげ図を作成する場合は,第一引数にデータ,第二引数にグループ
  • ノッチオプションを使用すると,5%水準で有意かどうかを視覚的に判断することができる
  • Symbol = '' で外れ値を非表示とすることができる

以上MATLABで箱ひげ図を作成する方法でした。

-MATLAB
-, ,