マルチモーダル分布の箱ひげ図


13

箱ひげ図をマルチモーダル分布またはユニモーダル分布のみに使用できますか?


複数のモードを持つ分布の通常の用語は、「マルチモーダル」です。それがあなたの言うことなら、通常の用語を使用するように編集してください。他のことを意味する場合は、用語を定義してください。
Glen_b -Reinstateモニカ

1
箱ひげ図は、複雑な分布形状には必ずしも役立つとは限りません。バイモーダル...マルチモーダル(「ポリモーダル」よりも一般的な用語になると思います)形状はしばしば隠されます。多くは、単峰性からの脱却がどれだけ強いかに依存します。そうしないと、ベルは鳴らず、エラーメッセージも表示されません。しかし、ヒストグラムまたはカーネル密度の推定値でさえ、複雑な分布を破壊する可能性があります。一部の人は、これを機能と見なします。これは、サンプルの単なる風変わりなモードを過剰に受け入れやすいためです。情報を失わない唯一の種類のプロットは、変位値プロットです。
ニックコックス

@Glen_bやりました。私の本では、彼らはポリモーダル分布について話している。1つのピークのユニモーダルは正しいですか?
user1091344

1
あなたは確かに箱ひげ図を使用することができます-あなたを止めるだろうか?問題は、通常のボックスプロットではモードの数が示されないことです(ただし、マルチモダリティを示すボックスプロットの変更があります)。箱ひげ図は、分布の形状が直接関心がある場合よりも、場所と広がり(多くのグループ間)のグループ間比較に関心がある場合に適しています。表示するマルチモダリティが重要な場合-特にグループが少ない場合-別のディスプレイ、または複数のディスプレイを使用することを強くお勧めします。(可能な場合は、コメントを回答に拡張します。)
Glen_b -Reinstate Monica

1
あなたの証拠は、この本をよく考えるように私たちを傾けません。
ニックコックス

回答:


20

問題は、通常のboxplot *では通常、モードの数を示すことができないことです。いくつかの(一般的にまれな)状況では、モードの最小数が1を超えるという明確な兆候を得ることができますが、通常、特定のボックスプロットは1つ以上のモードと一致します。

*通常の種類の箱ひげ図のいくつかの修正が提案されており、密度の変化を示し、複数のモードを識別するために使用することができますが、これらはこの質問の目的ではないと思います。

たとえば、このプロット少なくとも2つのモードの存在を示してますが(データは正確に2つになるように生成されています)-

ここに画像の説明を入力してください

逆に、これには分布に2つの非常に明確なモードがありますが、箱ひげ図からはまったくわかりません。

ここに画像の説明を入力してください

ボックスプロットは、必ずしも分布に関する多くの情報を伝えるとは限りません。ウィスカの外側にマークされたポイントがない場合、それらには5つの値のみが含まれ、5つの数値の要約は分布をあまりピンダウンしません。ただし、上記の最初の図は、cdfが(少なくとも 100のサンプルサイズで)ユニモーダル分布を本質的に除外するために十分に「固定」されている場合を示しています。cdfの制約と一致するユニモーダルcdfはありませんその場合、第1四半期に比較的急激な上昇を必要とし、中期には(平均して)わずかな上昇率に平坦化してから、最後の四半期に別の急激な上昇に変化します。n=

実際、ここの図1 (後で[1]で公開されるワーキングペーパーだと思います)は、同じ箱ひげ図を持つ4つの異なるデータセットを示しています。

そのようなデータはありませんが、同様のデータセットを作成するのは簡単なことです。上の5つの数字の要約に関連するリンクで示されているように、分布を制約する長方形のボックス内に収まるようにするだけです。 5つの数字の要約により制限されます。

以下は、論文のデータと同様のデータを生成するRコードです。

x1 = qnorm(ppoints(1:100,a=-.072377))
x1 = x1/diff(range(x1))*18+10
b = fivenum(x1)  # all of the data has this five number summary
x2 = qnorm(ppoints(1:48));x2=x2/diff(range(x2))*.6
x2 = c(b[1],x2+b[2],.31+b[2],b[4]-.31,x2+b[4],b[5])
d = .1183675; x3 = ((0:34)-34/2)/34*(9-d)+(5.5-d/2)
x3 = c(x3,rep(9.5,15),rep(10.5,15),20-x3)
x4 = c(1,rep(b[2],24),(0:49)/49*(b[4]-b[2])+b[2],(0:24)/24*(b[5]-b[4])+b[4])

上記のデータの、論文の表示と同様の表示を次に示します(ここでは、4つの箱ひげ図をすべて表示しています)。

ここに画像の説明を入力してください

ただし、注意してください- ヒストグラムにも問題があります。確かに、3番目の「ピーク」ヒストグラムの分布は実際には明らかに二峰性であるため、ここに問題の1つがあります。ヒストグラムビンの幅が広すぎて表示できません。さらに、Nick Coxがコメントで指摘しているように、カーネル密度の推定値は、モードの数の印象にも影響する可能性があります(モードを塗りつぶしたり、元の分布に存在しない小さなモードを示唆することもあります)。多くの一般的なディスプレイの解釈には注意が必要です。

マルチモダリティをより適切に示すことができるボックスプロットの修正があります(花瓶プロット、バイオリンプロット、豆プロットなど)。状況によっては便利な場合もありますが、モードの検索に興味がある場合は、通常は別の種類の表示を確認します。

箱ひげ図は、分布形状の詳細よりも、場所と広がりの比較(および、おそらく歪度)に関心が集中している場合に適しています。表示するマルチモダリティが重要な場合は、それを表示するのに優れたディスプレイを検討することをお勧めします。ディスプレイの正確な選択は、最もよく表示するものに依存します。

ただし、常にではありません- x4上記のサンプルデータの4番目のデータセット()は、完全に対称な箱ひげ図で明確に歪んだ分布を簡単に作成できることを示しています。

[1]:Choonpradub、C.、&McNeil、D.(2005)、
" boxplotは改善できますか?"
ソンクラナカリンJ.サイ 技術。27:3、649-657ページ。
http://www.jourlib.org/paper/2081800
pdf


2
モードに関する2つの広範なコメント。1.モダリティの特定のパターンの良いテストは、同じサイズのサンプルで繰り返し繰り返されるかどうかです。私の経験では、その意味でモードは非常に気まぐれになる可能性があります。2.モードを検討するときは、モードに実質的な解釈があるかどうかを常に尋ねる価値があります。しかし、すべての議論は間違っている可能性があります。正しく思い出せば、ほとんどの人は、男性と女性の混合物が高さの分布に二峰性を与えると推測しますが、高品質の大きなサンプルでもそれを検出するのは困難です。
ニックコックス

1
@NickCoxありがとう。実際、高さは二峰性ではないと推測していました。(現実の大まかな近似として)平均値が約1 sdで、男性と女性がほぼ同じである、標準偏差が類似した2つの正規分布を考慮したと想像してください。実際には、結合(2つの正規分布の混合)分布は単峰性です。もちろん、現実はもう少し複雑です-両方の分布は民族グループの混合であり、性別や民族グループ内でもゆがみ、異なる分散を持ち、平均は1sd以上異なりますが、結果(単峰性)は驚くべきではありません
Glen_b -Reinstate Monica

3
JW TukeyのExploratoryデータ分析(Reading、MA:Addison-Wesley、1977)には、Rayleighのデータのドットプロットが含まれていたため、ボックスプロットが役に立たない二峰性パターンとしてアルゴンの発見につながったことにフラグを立てる価値がありますTukeyの場合、構造を表示するには、ドットプロットの表示が必要です。Tukeyはボックスプロットと呼ばれ、その再発明者としてはあまり知られていません。
ニックコックス

7

Rでマルチモダリティを検出するための複数のオプションがあります。以下のチャートのデータは、3つのモード(-3,0,1)で生成されました。ボックスプロットは明らかに他のものよりも優れています(バイオリンプロットは異なるデフォルトのカーネル密度設定を持っているように見えます)が、実際には0モードと1モードを区別するものはありません。コンピュータ時代にもう箱ひげ図を使用する理由はほとんどありません。なぜ情報を捨てるのですか?

ここに画像の説明を入力してください

dat <- c(rnorm(500, -3, 1), rnorm(200, 0, 1), rnorm(300, 1, 1))

par(mfrow=c(2, 2))
boxplot(dat, horizontal=TRUE, main="Boxplot")

require(beanplot)
beanplot(dat, horizontal=TRUE, main="Beanplot")

require(viopoints)
viopoints(dat, horizontal=TRUE, main="Viopoints")

require(vioplot)
vioplot(dat, horizontal=TRUE)
title("Violin Plot")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.