0
0

外れ値があるか確認したいので箱ひげ図を使います。

Last updated at Posted at 2024-05-31

この記事について

データの分布を視覚的に把握したい時に、ヒストグラムもいいですが箱ひげ図をつかって外れ値を効果的に把握することができます。

簡単な説明とmatplotlibでの実装をまとめます。

僕が高校生の時と違って、今の高校生は数学で習うんですね。

箱ひげ図って何?

箱ひげ図はデータのばらつき具合を視覚的に把握したい時に活用できます。

特徴的なのは四分位数の表示です。

四分位数はデータを小さい順に並べて、小さいものから順位を付けた時に、

  • 25%(全体の1/4の部分)=25パーセンタイル
  • 50%(全体の2/4=1/2の部分)=50パーセンタイル
  • 75%(全体の3/4の部分)=75パーセンタイル

となります。
ちなみに念のため言うと50%の部分は中央値です。

箱ひげ図の見方

今回matplotlibでの実装を載せつ都合で、下の図はmatplotlibで作成したものです。
ひげの表す値もデフォルトのものに合わせています。
それぞれの区間は同数のデータが入るので、下の例では第二四分位数から第三四分位数の間のデータは他に比べて密集していることがわかります。

箱ひげ図

記事の一番下の参考文献を見てもらうとわかるのですが、上下のひげの表す値については最小値最大値の場合もありますし、図のようにIQR * 1.5の長さを調整した位置の場合もあります。(IQRは第三四分位数から第一四分位数の区間の長さを指してます。)

ひげが最小値、最大値を表すと思っていると外れ値があるデータの時に「最大値の上にさらにデータがあるぞ」となるので気をつけましょう。

外れ値がある場合、ドットでプロットされます。

matplotlibでの実装

import matplotlib.pyplot as plt

# キャンバスサイズ
plt.figure(figsize=(5, 5))
plt.boxplot(sampleDataSeries)
plt.title('sample for Qiita')

# 目盛りは今回適当なデータなので非表示
plt.xticks([])

plt.tight_layout()
plt.show()

スクリーンショット 2024-05-29 14.12.21.png

vert=Falseにすることで横向きに表示することもできます。(import文は略)

plt.figure(figsize=(5, 5))
plt.boxplot(sampleDataSeries,vert=False, autorange=True, meanline=True)
plt.title('sample for Qiita')

plt.yticks([])

plt.tight_layout()
plt.show()

スクリーンショット 2024-05-29 14.12.49.png

まとめ

図がいちいちでかいので、今度からは直します。
調べたらいろいろパラメータをいじれることを知ったので、そのうちまとめて更新予定。

参考文献

総務省統計局 なるほど統計学園箱ひげ図

matplotlib.pyplot.boxplot

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0