ヒストグラム内のビンの最適数の計算


80

ヒストグラムで使用するビンの数を決定するために、できる限り最適な方法を見つけることに興味があります。私のデータは最大で30〜350個のオブジェクトの範囲である必要があります。特に、「Otsuの方法のように」しきい値を適用しようとしています。悪い」オブジェクト。値の密度を高める必要があります。具体的な値は、オブジェクトごとに1〜10のスコアを持ちます。スコア6〜10の5〜10個のオブジェクトと、スコア1〜4の20〜25個のオブジェクトがありました。一般的に大津の方法のようなものが低得点のオブジェクトを閾値処理することを可能にするヒストグラムビニングパターンを見つけたいです。しかし、私が見たOtsuの実装では、ビンのサイズは256であり、多くの場合、256よりもはるかに少ないデータポイントがあります。私にとっては、256は良いビン番号ではないことを示唆しています。データが非常に少ない場合、使用するビンの数を計算するためにどのようなアプローチを取る必要がありますか?


Sturgesのルールはn <200に使用できると思います。ここで、nは観測値の数です
-venkasub

回答:


95

-Diaconisのフリードマンルールは非常に堅牢で、実際にはうまく機能します。ビン幅は設定され。したがって、ビンの数は。ここで、は観測値の数、maxは最大値、minは最小値です。h=2×IQR×n1/3(maxmin)/hn

ベースRでは、次を使用できます。

hist(x, breaks="FD")

このオプションのない他のプロットライブラリ(例ggplot2:)では、binwidthを次のように計算できます。

bw <- 2 * IQR(x) / length(x)^(1/3)

### for example #####
ggplot() + geom_histogram(aes(x), binwidth = bw)

2
@nico。Rのデフォルトはbreaks = "Sturges"で、常に良い結果が得られるとは限りません。
ロブハインドマン

4
どのように計算しIQRますか?
カートミューラー14

1
@KurtMueller IQRは四分位範囲を意味します。最初の四分位数と3番目の四分位数を探してください。違いはIQRです。IQRにはすでにRが付属しているため、使用できます。
xiaodai 14年

4
誤解がない場合、答えは次のようになりますnum_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
Jasha

1
nclass.FD9年前には存在しませんでした。
ロブハインドマン

18

使用するビンが少なすぎると、ヒストグラムはデータを実際にうまく描写しません。ビンの数が多すぎると、壊れた櫛のような外観になりますが、これも分布の感覚を与えません。

1つの解決策は、すべての値を示すグラフを作成することです。ドットプロット、またはビンを必要としない累積度数分布。

等間隔のビンで頻度分布を作成する場合は、ビンの数(または各ビンの幅)を決定する必要があります。決定は明らかに値の数に依存します。多数の値がある場合、グラフはより良く見え、多数のビンがある場合により有益になります。このウィキペディアのページには、観測数からビンの幅を決定するいくつかの方法がリストされています。最も簡単な方法は、ビンの数を、ビニングする値の数の平方根に等しく設定することです。

島崎秀明のこのページでは、別の方法について説明しています。計算は少し複雑ですが、素晴らしい仕事をしているようです。ページの上部はJavaアプリです。それをスクロールして理論と説明を確認し、スクロールを続けて方法を説明する論文へのリンクを見つけます。


Hideakiのページへのリンクが壊れています。これが同じかどうかわかりませ
DarenW

9

デンビーとマローズの論文「ヒストグラムのバリエーション」が興味深いかもしれません。

「ディスト」と呼ばれるこの新しい表示(斜めにカットされたヒストグラム)は、等幅のヒストリと等面積のヒストリの両方の望ましい特徴を保持します。データにスパイクがある場合、ea histのような背の高い狭いビンが表示され、通常のヒストグラムのように孤立した外れ値が表示されます。

また、Rのコードはリクエストに応じて利用できることも言及しています。


5

私はこれが厳密に良い実践としてカウントされるかどうかはわかりませんが、異なるビン幅で複数のヒストグラムを作成し、どのヒストグラムが私が最も伝えようとしている解釈に適合するかに基づいて使用するヒストグラムを選択する傾向があります。これはヒストグラムの選択にある程度の客観性をもたらしますが、ヒストグラムを提供している人よりもデータを理解するのに多くの時間を費やしてきたので、非常に簡潔なメッセージを伝える必要があります。

また、同じビン幅ではなく、各ビンに同じ数のポイントがあるヒストグラムを表示することも大好きです。通常、これらは一定のビン幅よりもはるかに優れたデータを表しますが、作成するのは難しいです。


1
申し訳ありませんが、私はこれを自動化された方法で行う必要があると述べたはずです。「自分の目的に最適なものが見つかるまで複数回行う」というオプションは機能しません。...計算を行う必要があります
トニー・スターク

4
私は同意する-1つの「最適な」ビン幅があるという考えは、巨大な単純化の仮定です。
ハドリー

5

島崎Sh本法を見ましたか?

計算コストが高いように見えますが、良い結果が得られる可能性があります。計算時間が問題でない場合は、試してみる価値があります。このメソッドの実装は、Java、MATLABなど、次のリンクにあります。リンクは十分に高速です: web-interface


3

プログラムでビンの数を決定する必要がある場合、通常は必要以上にビンが多いヒストグラムから始めます。ヒストグラムが満たされたら、使用している方法に対してビンごとに十分なエントリができるまでビンを結合します。たとえば、10以上の数になるまで、正規分布からの不確実性を伴うカウント実験でポアソン不確実性をモデル化する場合エントリ。


2

この回答は、Rob Hyndman氏の回答を補足するものとしてご覧ください。

基本的なRまたはパッケージでFreedman–Diaconisルールを使用して、まったく同じ間隔または 'binwidths'でヒストグラムプロットを作成するには、関数の値のいずれか、つまりを使用できます。Freedman–Diaconisルールを使用してデータからヒストグラムを作成するとします。基本的なRではggplot2hist()breaksqsecmtcars

x <- mtcars$qsec
hist(x, breaks = "FD")

一方、ggplot2パッケージでは

h <- hist(x, breaks = "FD", plot = FALSE)
qplot(x, geom = "histogram", breaks = h$breaks, fill = I("red"), col = I("white"))

または、代わりに

ggplot(mtcars, aes(x)) + geom_histogram(breaks = h$breaks, col = "white")

それらはすべて、意図したとおりの正確な間隔とビン数でヒストグラムプロットを生成します。


-5

Au g / tの観測値は600個あります。ビンサイズ1はこれを私に与えます:ここに画像の説明を入力してください

自動選択(ビンの範囲を省略する)により、これが得られます。ここに画像の説明を入力してください

データは、データの整合性に問題がないかのように、1番目と2番目のグラフでは問題ありません。ビンサイズ0.1(g / t)のみが質問に答えます:測定値は不正確で不正確でしたここに画像の説明を入力してください

私の判断:1.地球上には、自然現象の真の価値を示す測定技術はありません。すべての測定値は近似値であり、一部は実際の値に近い値です。サンプリングの設計、キャリブレーション、人間の資格などに依存します。2.これが、分布が対称ではなく歪んでいる理由です。3.それにもかかわらず、分布の形状は、少なくともおおよそ「ベルのような」セクションに似ている必要があります。一度に1つのベル(複数の地質環境がない限り)。4.ビンサイズ操作による周波数分布は、測定がどの程度正確で正確であったかを示すパターンを明らかにするのに役立ちます。そのため、石の規則的なカットではなく、ビンのサイズを実験的にピックアップする必要があります。


2
道徳を綴らない限り、これは答えよりもコメントです。道徳はこれだと思います:すべてのルールは経験則であり、いくつかは他のものよりも統計的根拠がありますが、ほとんどのルールは分布が非常に高い歪度または尖度を持っている場合、あなたが望むことをしないかもしれません。だから、あなたの判断も使ってください。
ニックコックス

2
コメントを追加しましたが、有益な新しい詳細がスレッドに貢献していることは明確ではありません。1.私には問題ありませんが、ここでは問題ありません。2.一部の分布はほぼ対称的であるため、1からは続きません。3.疑わしい:鐘以外の形状が予想される状況は数多くあります。4.また、元の測定値の品質がどのヒストグラムからも明らかではないため、疑わしいですが、多くの場合、分布の非常に細かい構造に注意して最もよく検査されます。
ニックコックス

2.ほぼ対称は対称ではありません。あなたは妊娠していることはできません:妊娠しているかどうか。
セルゴクシアーニ

2
確かに、データの正確な対称性は非常にまれであるため、「対称」と言った場合、誰かがそれにも合理的に反対する可能性があります。ほぼ対称になるのは非常に簡単です。それが、歪度の尺度を有する理由と方法です。
ニックコックス

1
ただし、あなたのコメントは一般的であり、あなたが今与えている文脈に欠けていました。順番に私は「間違っている」ではなく「疑わしい」と言った。私の主要なコメントは、あなたの答えは、ビンのサイズまたは同等のビンの数を選択する方法に関するスレッドに実際にはあまり追加しないということです。それが難しい別の例があるのは、実際には答えではなく、質問のスピンです。
ニックコックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.