ひげの係数の1.5の理由
で求められるが、この1.5ってどこから来たん??という疑問
The default value of whis = 1.5 corresponds to Tukey's original definition of boxplots.
と書いているだけで、じゃあそのオリジナルのはどうやって決まったんだよというのがわからなかった
調べたら、この辺に書いていた
要するに、
プロットするデータが正規分布に従う場合に、
これが、±3σに近く、かつ1.5というキリの良い数字だから、 という感じらしい
つまり、ひげの解釈としては、
あー、この中に99%ぐらい収まるんだなぁ、
みたいな感じになる
code:py
from scipy.stats import norm
# 四分位点を計算
q1 = norm.ppf(0.25)
q3 = norm.ppf(0.75)
# IQRを計算
IQR = q3 - q1
# ひげの上端と下端を計算
uw = q3 + IQR * 1.5
lw = q1 - IQR * 1.5
# ひげの範囲に含まれる確率を計算
p = norm.cdf(uw) - norm.cdf(lw)
print(f"ひげの上端: {uw}") # 2.697959000784327
print(f"ひげの下端: {lw}") # -2.697959000784327
print(f"ひげの範囲に含まれる確率: {p}%") # 0.9930233967607198%
ただこれ、「データが正規分に従う場合に」という前提付きなので、
従わないデータを箱ひげ図に描画した際は、特に何の情報にも(?)ならない
例えばこういう、指数分布に従うデータで見てみる
code:py
# 指数分布のパラメータ
lambda_param = 1.0
# 指数分布からサンプルを生成
np.random.seed(0)
data = np.random.exponential(scale=1/lambda_param, size=100)
# DataFrameに変換
df = pd.DataFrame(data, columns='Value') https://gyazo.com/9c4e9ff433f53edc404d092f5fb5a2f6
箱ひげ図にするとこうなる
https://gyazo.com/7a2af2aafcc4164e1e04627c869cbd9e
白丸が外れ値だが、外れ値が多くなりすぎる