回答:
ヒストグラムは多くの場合便利で便利な場合がありますが、誤解を招く可能性があります。それらの外観は、ビンの境界の位置が変わるとかなり変化する可能性があります。
この問題は以前から知られていましたが、おそらくそれほど広くはありませんでした-初級レベルの議論で言及されることはめったにありません(例外はありますが)。
*たとえば、Paul Rubin [1]は次のように述べています。「ヒストグラムのエンドポイントを変更すると、その外観が大きく変わる可能性があることはよく知られています」。。
これは、ヒストグラムを導入する際により広く議論されるべき問題だと思います。いくつかの例と議論をします。
データセットの単一のヒストグラムに依存することに注意する必要がある理由
次の4つのヒストグラムをご覧ください。
これは、非常に異なる4つのヒストグラムです。
次のデータを貼り付けた場合(ここではRを使用しています):
Annie <- c(3.15,5.46,3.28,4.2,1.98,2.28,3.12,4.1,3.42,3.91,2.06,5.53,
5.19,2.39,1.88,3.43,5.51,2.54,3.64,4.33,4.85,5.56,1.89,4.84,5.74,3.22,
5.52,1.84,4.31,2.01,4.01,5.31,2.56,5.11,2.58,4.43,4.96,1.9,5.6,1.92)
Brian <- c(2.9, 5.21, 3.03, 3.95, 1.73, 2.03, 2.87, 3.85, 3.17, 3.66,
1.81, 5.28, 4.94, 2.14, 1.63, 3.18, 5.26, 2.29, 3.39, 4.08, 4.6,
5.31, 1.64, 4.59, 5.49, 2.97, 5.27, 1.59, 4.06, 1.76, 3.76, 5.06,
2.31, 4.86, 2.33, 4.18, 4.71, 1.65, 5.35, 1.67)
Chris <- c(2.65, 4.96, 2.78, 3.7, 1.48, 1.78, 2.62, 3.6, 2.92, 3.41, 1.56,
5.03, 4.69, 1.89, 1.38, 2.93, 5.01, 2.04, 3.14, 3.83, 4.35, 5.06,
1.39, 4.34, 5.24, 2.72, 5.02, 1.34, 3.81, 1.51, 3.51, 4.81, 2.06,
4.61, 2.08, 3.93, 4.46, 1.4, 5.1, 1.42)
Zoe <- c(2.4, 4.71, 2.53, 3.45, 1.23, 1.53, 2.37, 3.35, 2.67, 3.16,
1.31, 4.78, 4.44, 1.64, 1.13, 2.68, 4.76, 1.79, 2.89, 3.58, 4.1,
4.81, 1.14, 4.09, 4.99, 2.47, 4.77, 1.09, 3.56, 1.26, 3.26, 4.56,
1.81, 4.36, 1.83, 3.68, 4.21, 1.15, 4.85, 1.17)
次に、それらを自分で生成できます。
opar<-par()
par(mfrow=c(2,2))
hist(Annie,breaks=1:6,main="Annie",xlab="V1",col="lightblue")
hist(Brian,breaks=1:6,main="Brian",xlab="V2",col="lightblue")
hist(Chris,breaks=1:6,main="Chris",xlab="V3",col="lightblue")
hist(Zoe,breaks=1:6,main="Zoe",xlab="V4",col="lightblue")
par(opar)
次に、このストリップチャートを見てください。
x<-c(Annie,Brian,Chris,Zoe)
g<-rep(c('A','B','C','Z'),each=40)
stripchart(x~g,pch='|')
abline(v=(5:23)/4,col=8,lty=3)
abline(v=(2:5),col=6,lty=3)
(まだ明らかでない場合は、各セットからAnnieのデータを差し引くとどうなるかを確認してください。head(matrix(x-Annie,nrow=40))
)
データは毎回0.25だけ左にシフトされています。
しかし、ヒストグラムから得られる印象(右スキュー、均一、左スキュー、バイモーダル)はまったく異なっていました。私たちの印象は、最小値に対する最初のビン起源の位置によって完全に支配されていました。
したがって、ビンの開始位置を移動するだけで、「指数関数」と「非指数関数」だけでなく、「右スキュー」と「左スキュー」または「バイモーダル」と「ユニフォーム」も移動できます。
編集:binwidthを変えると、次のようなことが起こります:
これは、両方のケースで同じ 34の観測値であり、ブレークポイントが異なるだけです。1つはbinwidthで、もうつはbinwidthです。0.8
x <- c(1.03, 1.24, 1.47, 1.52, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97, 1.98,
1.99, 2.72, 2.75, 2.78, 2.81, 2.84, 2.87, 2.9, 2.93, 2.96, 2.99, 3.6,
3.64, 3.66, 3.72, 3.77, 3.88, 3.91, 4.14, 4.54, 4.77, 4.81, 5.62)
hist(x,breaks=seq(0.3,6.7,by=0.8),xlim=c(0,6.7),col="green3",freq=FALSE)
hist(x,breaks=0:8,col="aquamarine",freq=FALSE)
気の利いた、え?
はい、それらのデータはそれを行うために意図的に生成されました...しかし、教訓は明確です-ヒストグラムで見るものは、データの特に正確な印象ではないかもしれません。
ヒストグラムは広く使用されており、取得するのに便利な場合が多く、予想される場合もあります。このような問題を回避または軽減するために何ができますか?
ニック・コックスは、関連する質問へのコメントで指摘:親指のルールは常にビン幅およびビン起源の変動に対してロバストな詳細が本物である可能性があることをする必要があります。そのように壊れやすい細部は偽りか些細なものになりそうです。
少なくとも、いくつかの異なるbinwidthsまたはbin-origins、またはできれば両方でヒストグラムを常に実行する必要があります。
または、帯域幅が広すぎないカーネル密度推定値を確認します。
ヒストグラムの意性を減らすもう1つのアプローチは、平均化されたシフトヒストグラムです。
(これは最新のデータセットの1つです)が、その努力に取り組む場合は、カーネル密度の推定値を使用することも考えられます。
ヒストグラムを使用している場合(問題を鋭く認識しているにもかかわらず使用します)、ほとんどの場合、通常のプログラムのデフォルトが提供する傾向があるよりもかなり多くのビンを使用することを好みます。 (そして、時々、起源)。印象が合理的に一貫している場合、この問題を抱えている可能性は低く、一貫していない場合は、カーネル密度推定、経験的CDF、QQプロットなどを注意深く試してください。同様。
ヒストグラムは時々誤解を招くかもしれませんが、箱ひげ図はそのような問題をさらに起こしやすいです。箱ひげ図では、「ビンをさらに使用する」と言うことすらできません。この投稿の4つの非常に異なるデータセットを参照してください。データセットの1つがかなりゆがんでいるとしても、すべて同一の対称的な箱ひげ図です。
[1]:Rubin、Paul(2014) "Histogram Abuse!"、
Blog post、OR in the OB world、2014年1月23日
link ... (代替リンク)
カーネル密度またはログスプラインプロットは、ヒストグラムよりも優れたオプションです。これらの方法で設定できるオプションがまだいくつかありますが、それらはヒストグラムよりも気まぐれです。qqplotもあります。データが理論上の分布に十分に近いかどうかを確認するための便利なツールの詳細は次のとおりです。
Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne, D.F and Wickham, H. (2009) Statistical Inference for exploratory data analysis and model diagnostics Phil. Trans. R. Soc. A 2009 367, 4361-4383 doi: 10.1098/rsta.2009.0120
アイデアの短いバージョン(詳細についてはまだ論文を読んでいます)は、null分布からデータを生成し、そのうちの1つがオリジナル/実データであり、残りが理論分布からシミュレートされる複数のプロットを作成することです。次に、元のデータを見なかった人(おそらく自分)にプロットを提示し、実際のデータを選択できるかどうかを確認します。実際のデータを識別できない場合、nullに対する証拠はありません。
vis.test
RのTeachingDemosパッケージの関数は、このテストのフォームの実装に役立ちます。
以下に簡単な例を示します。以下のプロットの1つは10自由度の分布から生成された25点であり、他の8つは同じ平均と分散をもつ正規分布から生成されます。
vis.test
そして、このプロットを作成し、機能は、彼らが異なっていると思うのプロットは、プロセス2回(合計3)を繰り返すかを選択するプロンプトが表示されます。
累積分布プロット[ MATLAB、R ] –値の範囲以下のデータ値の割合をプロットする場所–は、経験的データの分布を見る最良の方法です。たとえば、Rで生成されたこのデータのECDFは次のとおりです。
これは、次のR入力(上記のデータ)で生成できます。
plot(ecdf(Annie),xlim=c(min(Zoe),max(Annie)),col="red",main="ECDFs")
lines(ecdf(Brian),col="blue")
lines(ecdf(Chris),col="green")
lines(ecdf(Zoe),col="orange")
ご覧のとおり、これらの4つの分布が単純に相互に翻訳されていることは視覚的に明らかです。一般に、データの経験的分布を視覚化するためのECDFの利点は次のとおりです。
唯一の秘trickは、ECDFを適切に読み取る方法を学習することです。浅い傾斜領域は疎分布を意味し、急な傾斜領域は密分布を意味します。しかし、それらを読んで慣れると、経験データの分布を見るための素晴らしいツールになります。
提案:通常、ヒストグラムはビンの中間点で発生したx軸データのみを割り当て、より正確な位置のx軸測定値を省略します。これが近似の導関数に与える影響は非常に大きくなる可能性があります。ささいな例を見てみましょう。ディラックデルタの古典的な導出を考えますが、有限スケール(半値全幅)の任意の中央値位置でコーシー分布から開始するように修正します。次に、スケールがゼロになると、制限がかかります。ヒストグラムの古典的な定義を使用し、ビンサイズを変更しない場合、位置もスケールもキャプチャしません。ただし、固定幅のビン内の中央位置を使用する場合、スケールがビン幅に比べて小さい場合、スケールではない場合は常に位置をキャプチャします。
データが歪んでいる値をフィッティングするために、固定されたビンの中点を使用すると、その領域の曲線セグメント全体がx軸シフトされます。これは上記の質問に関連すると思います。
ステップ1これ はほとんど解決策です。を使用しました各ヒストグラムカテゴリで、各ビンの平均x軸値としてこれらを表示しました。各ヒストグラムビンの値は8であるため、分布はすべて均一に見え、それらを表示するには垂直にオフセットする必要がありました。表示は正しい答えではありませんが、情報がないわけではありません。グループ間にx軸のオフセットがあることを正しく示しています。また、実際の分布はわずかにU字型に見えます。どうして?平均値間の距離は中心でさらに離れており、エッジでより近いことに注意してください。したがって、これをより適切に表現するには、各ビン境界サンプルのサンプル全体と小数を借用して、x軸上のすべての平均ビン値を等距離にする必要があります。これを修正して適切に表示するには、少しプログラミングが必要です。しかし、それは、ヒストグラムを作成して、基礎となるデータを何らかの論理形式で実際に表示するための単なる方法かもしれません。データの範囲をカバーするビンの総数を変更すると、形状は変わりますが、アイデアは、任意にビンニングすることによって生じる問題の一部を解決することです。
ステップ2それでは、ビン間の借用を開始して、平均間隔をより均等にしようとしましょう。
これで、ヒストグラムの形状が現れ始めています。ただし、ビン間で交換するサンプルの数は整数であるため、平均値の違いは完全ではありません。y軸の整数値の制限を削除し、等距離のx軸の平均値を作成するプロセスを完了するには、ビン間でサンプルの端数の共有を開始する必要があります。
ご覧のように、ビン境界で値の一部を共有すると、平均値間の距離の均一性が向上します。与えられたデータを使用して、小数点以下3桁までこれを行うことができました。ただし、データの粗さがそれを許可しないため、一般的に平均値間の距離を正確に等しくすることはできません。
ただし、カーネル密度推定を使用するなど、他のこともできます。
ここで、Annieのデータは、0.1、0.2、0.4のガウス平滑化を使用した有界カーネル密度として表示されます。他のサブジェクトは、私がやったことと同じことをすれば、つまり各データセットの下限と上限を使用すれば、同じタイプの関数をシフトします。したがって、これはもはやヒストグラムではなくPDFであり、いぼのないヒストグラムと同じ役割を果たします。