私は、で使用するビンの数を決定するために、できるだけ最適な方法を見つけることに興味があります。ヒストグラム。私のデータは最大で30から350のオブジェクトの範囲である必要があります。特に、しきい値を適用しようとしています(大津の方法のように)。「良い」オブジェクトは、数が少なく、より分散している必要があります。 「悪い」オブジェクトから分離されているため、値の密度が高くなります。具体的な値のスコアは、オブジェクトごとに1〜10になります。5〜10個のオブジェクト、スコアは6〜10、20〜25個のオブジェクトがあります。スコア1〜4。大津の方法のようなものが低スコアのオブジェクトをしきい値設定することを一般的に可能にするヒストグラムビニングパターンを見つけたいと思います。しかし、私が見た大津の実装では、ビンのサイズは256であり、多くの場合、256よりもはるかに少ないデータポイントがあります。これは、256が適切なビン番号ではないことを示唆しています。データが非常に少ない場合、使用するビンの数を計算するにはどのようなアプローチを取る必要がありますか?
コメント
回答
Freedman-Diaconis ルールは非常に堅牢で、実際にはうまく機能します。 bin-widthは $ h = 2 \ times \ text {IQR} \ times n ^ {-1/3} $ に設定されています。したがって、ビンの数は $(\ max- \ min)/ h $ です。ここで、 $ n $ は観測数、maxは最大値、minは最小値です。
ベースRでは、次を使用できます。
hist(x, breaks="FD")
このオプションのない他のプロットライブラリ(例:ggplot2
)の場合、binwidthは次のように計算できます。
bw <- 2 * IQR(x) / length(x)^(1/3) ### for example ##### ggplot() + geom_histogram(aes(x), binwidth = bw)
コメント
は9年前には存在しませんでした。
回答
使用する場合ビンが少なすぎると、ヒストグラムはデータをうまく表現できません。ビンが多すぎると、くしの外観が壊れてしまい、分布の感覚も得られません。
1つ解決策は、すべての値を示すグラフを作成することです。ドットプロット、またはビンを必要としない累積度数分布のいずれか。
等間隔のビンで度数分布を作成する場合は、ビンの数(または幅)を決定する必要があります。決定は明らかに値の数に依存します。値がたくさんある場合、グラフは見栄えが良く、ビンがたくさんあるとより有益になります。これウィキペディアのページには、観測数からビンの幅を決定するためのいくつかの方法がリストされています。最も簡単な方法は、ビンの数を、ビニングする値の数の平方根に等しく設定することです。
島崎英明のこのページでは、別の方法について説明しています。計算は少し複雑ですが、うまくいくようです。ページの上部はJavaアプリ。それをスクロールして理論と説明を確認し、スクロールを続けて方法を説明する論文へのリンクを見つけます。
コメント
回答
たぶん紙「 DenbyとMallowsによるヒストグラムのバリエーション “が興味深いでしょう:
この新しい表示は「dhist」と呼ばれます(対角線上) -カットヒストグラム)は、等幅の履歴と等面積の履歴の両方の望ましい機能を保持します。データにスパイクがある場合は、ea histのような背の高い狭いビンが表示され、通常のヒストグラムのように孤立した外れ値が表示されます。
また言及されていますRのコードはリクエストに応じて入手できます。
回答
島崎-篠本法?
計算コストが高いように見えますが、良い結果が得られる場合があります。計算時間が問題にならない場合は、試してみる価値があります。このメソッドのいくつかの実装は、Java、MATLABなどで、十分に高速に実行される次のリンクにあります: web-interface
コメント
回答
これが厳密に適切な方法としてカウントされるかどうかはわかりませんが、ビンの幅が異なる複数のヒストグラムを作成し、ヒストグラムを選択する傾向があります。どのヒストグラムが私が最もよく伝えようとしている解釈に適合するかに基づいて使用します。これにより、ヒストグラムの選択にある程度の主観がもたらされますが、ヒストグラムを提供する人よりもデータを理解する時間がはるかに長いことに基づいて正当化します。そのため、非常に簡潔なメッセージを提供する必要があります。
私はまた、同じビン幅ではなく、各ビンに同じ数のポイントを持つヒストグラムを表示することの大ファンです。私は通常、これらは作成がより困難ですが、一定のビン幅よりもはるかに優れたデータを表していると思います。
コメント
回答
プログラムでビンの数を決定する必要がある場合は、通常、必要以上のビンを持つヒストグラムから始めます。ヒストグラムがいっぱいになったら、使用している方法に対してビンごとに十分なエントリができるまで、ビンを結合します。ポアソン分布をモデル化する場合-正規分布からの不確実性を使用して、10エントリ以上になるまでのカウント実験で不確実性をモデル化します。
回答
この回答は、氏の補足としてご覧ください。 RobHyndmanの回答。
正確に同じ間隔でヒストグラムプロットを作成するためにまたは Freedman–Diaconisルールと基本的なRまたはggplot2
パッケージのいずれかを使用した「binwidths」、1つを使用できますhist()
関数の値の例breaks
。qsec
Freedman–Diaconisルールを使用したmtcars
データから。基本的なRでは、
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")
これらはすべて、意図したとおりにまったく同じ間隔とビン数でヒストグラムプロットを生成します。
回答
I Au g / tの観測値が600あります。ビンサイズ1は、次のようになります。
自動選択(ビンの範囲を省略)により、次のようになります。
データは、1番目と2番目のグラフでOKのように見えます。データの整合性に問題はありません。ビンサイズ0.1(g / t)のみが質問に答えます:測定値は不正確で不正確でした
私の判断:1。自然現象の真の価値を示すための地球上の測定技術はありません。すべての測定値は概算であり、一部は真の値に近いものです。サンプリングの設計、キャリブレーション、人間の資格などによって異なります。2。これが、分布が対称ではなく歪んでいる理由です。 3.それでも、分布の形は、少なくともおおよそ「ベルのような」セクションに似ている必要があります。一度に1つのベル(複数の地質環境がない限り)。 4.ビンサイズ操作による度数分布は、測定がどの程度正確で正確であったかについてのパターンを明らかにするのに役立ちます。そのため、石に切り取られたルールではなく、実験的にビンのサイズを選択する必要があります。
コメント