Berechnung der optimalen Anzahl von Behältern in einem Histogramm


80

Ich bin daran interessiert, eine möglichst optimale Methode zu finden, um zu bestimmen, wie viele Fächer ich in einem Histogramm verwenden soll. Meine Daten sollten höchstens 30 bis 350 Objekte umfassen. Insbesondere versuche ich, Schwellenwerte (wie Otsus Methode) anzuwenden, von denen "gute" Objekte, von denen ich weniger haben sollte und die weiter verteilt sein sollten, getrennt sind. " schlechte "Objekte, deren Wert dichter sein sollte. Ein konkreter Wert hätte eine Punktzahl von 1-10 für jedes Objekt. Ich hatte 5-10 Objekte mit Punkten 6-10 und 20-25 Objekte mit Punkten 1-4. Ich würde gerne ein Histogramm-Binning-Muster finden, das es Otsus Methode im Allgemeinen ermöglicht, die Objekte mit niedriger Punktzahl abzuschwächen. Bei der Implementierung von Otsu, die ich gesehen habe, betrug die Bin-Größe jedoch 256, und häufig habe ich viel weniger Datenpunkte als 256. was für mich nahelegt, dass 256 keine gute bin-nummer ist. Welche Ansätze sollten bei so wenigen Daten zur Berechnung der Anzahl der zu verwendenden Fächer verwendet werden?


Ich denke, die Sturges-Regel kann für n <200 verwendet werden; Dabei ist n die Anzahl der Beobachtungen
venkasub

Antworten:


95

h=2×IQR×n1/3(maxmin)/hn

In der Basis R können Sie Folgendes verwenden:

hist(x, breaks="FD")

Für andere Plot-Bibliotheken ohne diese Option (z. B. ggplot2) können Sie die Binwidth wie folgt berechnen:

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

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

2
@nico. Der Standardwert in R ist breaks = "Sturges", was nicht immer gute Ergebnisse liefert.
Rob Hyndman

4
Wie rechnet man IQR?
Kurt Mueller

1
@ KurtMueller IQR bedeutet Interquartilbereich. Suchen Sie nach 1. Quartil und 3. Quartil und der Unterschied ist IQR. IQR wird bereits mit R geliefert, sodass Sie es verwenden können.
Xiaodai

4
Wenn ich mich nicht irre, sollte die Antwort lautennum_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
Jasha

1
nclass.FDexistierte vor neun Jahren nicht.
Rob Hyndman

18

Wenn Sie zu wenige Fächer verwenden, werden die Daten im Histogramm nicht wirklich gut dargestellt. Wenn Sie zu viele Fächer haben, erhalten Sie eine gebrochene Kammoptik, die auch keinen Sinn für die Verteilung gibt.

Eine Lösung besteht darin, ein Diagramm zu erstellen, das jeden Wert anzeigt. Entweder ein Punktdiagramm oder eine kumulative Häufigkeitsverteilung, für die keine Klassen erforderlich sind.

Wenn Sie eine Häufigkeitsverteilung mit gleichmäßig verteilten Fächern erstellen möchten, müssen Sie festlegen, wie viele Fächer (oder wie breit jedes Fach ist). Die Entscheidung hängt eindeutig von der Anzahl der Werte ab. Wenn Sie viele Werte haben, sieht Ihr Diagramm besser aus und ist informativer, wenn Sie viele Klassen haben. Diese Wikipedia-Seite listet verschiedene Methoden zur Bestimmung der Behälterbreite anhand der Anzahl der Beobachtungen auf. Die einfachste Methode besteht darin, die Anzahl der Bins gleich der Quadratwurzel der Anzahl der Werte festzulegen, die Sie bündeln.

Diese Seite von Hideaki Shimazaki erklärt eine alternative Methode. Es ist etwas komplizierter zu berechnen, aber es scheint eine großartige Arbeit zu leisten. Der obere Teil der Seite ist eine Java-App. Scrollen Sie darüber hinaus, um die Theorie und Erklärung zu sehen, und scrollen Sie dann weiter, um Links zu den Artikeln zu finden, die die Methode erklären.


Der Link zu Hideakis Seite ist kaputt. Ich bin mir nicht sicher, ob dies dasselbe ist: toyoizumilab.brain.riken.jp/hideaki/res/histogram.html
DarenW

9

Vielleicht ist die Arbeit " Variations on the histogram " von Denby and Mallows von Interesse:

Diese neue Anzeige, die wir als "dhist" (für diagonal geschnittenes Histogramm) bezeichnen, bewahrt die wünschenswerten Merkmale sowohl der Hist mit gleicher Breite als auch der Hist mit gleicher Fläche. Es zeigt hohe, schmale Bins wie das Eahist, wenn die Daten Spitzen aufweisen, und zeigt isolierte Ausreißer wie das übliche Histogramm.

Sie erwähnen auch, dass Code in R auf Anfrage erhältlich ist.


5

Ich bin mir nicht sicher, ob dies eine gute Praxis ist, aber ich tendiere dazu, mehr als ein Histogramm mit unterschiedlichen Behälterbreiten zu erstellen und das zu verwendende Histogramm auszuwählen, basierend darauf, welches Histogramm zu der Interpretation passt, die ich am besten kommunizieren möchte. Obwohl dies die Auswahl des Histogramms etwas objektiver macht, begründe ich dies damit, dass ich viel mehr Zeit hatte, die Daten zu verstehen, als die Person, der ich das Histogramm gebe, und dass ich ihnen daher eine sehr präzise Botschaft übermitteln muss.

Ich bin auch ein großer Fan davon, Histogramme mit der gleichen Anzahl von Punkten in jedem Fach anstatt mit der gleichen Fachbreite zu präsentieren. Ich finde normalerweise, dass diese die Daten viel besser darstellen als die konstante Behälterbreite, obwohl sie mopre schwierig zu produzieren sind.


1
Entschuldigung, ich hätte erwähnen sollen, dass ich dies auf automatisierte Weise tun muss. Die Option, "es mehrmals zu tun, bis ich diejenige finde, die meinem Zweck am besten entspricht", funktioniert bei mir nicht. muss rechnerisch erledigt werden ...
Tony Stark

4
Ich stimme zu - die Idee, dass es eine "optimale" Behälterbreite gibt, ist eine riesige vereinfachende Annahme.
Hadley

5

Haben Sie die Shimazaki-Shinomoto- Methode gesehen?

Obwohl es rechenintensiv zu sein scheint, kann es zu guten Ergebnissen führen. Es lohnt sich, es zu versuchen, wenn die Rechenzeit nicht Ihr Problem ist. Es gibt einige Implementierungen dieser Methode in Java, MATLAB usw. unter dem folgenden Link, der schnell genug ausgeführt wird: Web-Interface


3

Wenn ich die Anzahl der Fächer programmgesteuert bestimmen muss, beginne ich normalerweise mit einem Histogramm, das weit mehr Fächer als erforderlich enthält. Sobald das Histogramm gefüllt ist, kombiniere ich die Bins, bis ich genug Einträge pro Bin für die von mir verwendete Methode habe, z Einträge.


2

Bitte sehen Sie diese Antwort als Ergänzung zu Rob Hyndmans Antwort .

Um mit der Freedman-Diaconis-Regel Histogramm-Diagramme mit exakt gleichen Intervallen oder 'binwidths' zu erstellen, entweder mit Basic R oder Package, können wir einen der Funktionswerte verwenden, nämlich . Angenommen, wir möchten ein Histogramm von Daten mit der Freedman-Diaconis-Regel erstellen . In Basic R verwenden wirggplot2hist()breaksqsecmtcars

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

In der Zwischenzeit verwenden ggplot2wir in Paket

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

Oder alternativ

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

Alle von ihnen erzeugen Histogramm-Plots mit exakt den gleichen Intervallen und der gleichen Anzahl von Behältern wie beabsichtigt.


-5

Ich habe 600 Beobachtungen für Au g / t. Bin Größe 1 gibt mir Folgendes:Bildbeschreibung hier eingeben

Die automatische Auswahl (den Behälterbereich weglassen) ergibt Folgendes:Bildbeschreibung hier eingeben

Die Daten sehen in der ersten und zweiten Grafik so aus, als ob es kein Problem mit der Datenintegrität gibt. Nur die Behältergröße 0,1 (g / t) beantwortet die Frage: Die Messungen waren sowohl ungenau als auch ungenauBildbeschreibung hier eingeben

Mein Urteil: 1. Es gibt keine Messtechnik auf der Erde, die den wahren Wert eines natürlichen Phänomens aufzeigt. Alle Maße sind ungefähre Werte, einige liegen nahe am wahren Wert. Dies hängt vom Design der Probenahme, der Kalibrierung, der Qualifikation des Menschen usw. ab. 2. Aus diesem Grund ist die Verteilung eher verzerrt als symmetrisch. 3. Die Form der Verteilung sollte jedoch zumindest annähernd einem "glockenartigen" Abschnitt ähneln. Jeweils eine Glocke (außer es gibt mehrere geologische Umgebungen). 4. Die Häufigkeitsverteilung mit der Manipulation der Behältergröße kann dabei helfen, das Muster für die Genauigkeit und Genauigkeit der Messungen zu ermitteln. Damit man eine experimentelle Aufnahme der Behältergröße braucht, anstatt eine in Stein gemeißelte Regel.


2
Dies ist eher ein Kommentar als eine Antwort, es sei denn, Sie formulieren die Moral. Ich würde sagen, die Moral ist die folgende: Alle Regeln sind Faustregeln, einige haben statistischere Grundlagen als andere, aber die meisten Regeln tun möglicherweise nicht das, was Sie wünschen, wenn Verteilungen eine sehr hohe Schiefe oder Kurtosis aufweisen. Nutzen Sie also auch Ihr Urteilsvermögen.
Nick Cox

2
Sie haben Kommentare hinzugefügt, aber mir ist nicht klar, ob irgendwelche hilfreichen neuen Details zum Thread beitragen. 1. ist in Ordnung von mir, aber nicht das Problem hier. 2. folgt nicht aus 1. da einige Distributionen nahezu symmetrisch sind. 3. ist zweifelhaft: Es gibt viele Situationen, in denen andere Formen als Glocken erwartet werden. 4. ist auch zweifelhaft, da die Qualität der ursprünglichen Messungen oft nicht aus einem Histogramm ersichtlich ist, sondern am besten unter Berücksichtigung der sehr feinen Struktur einer Verteilung untersucht wird.
Nick Cox

2. Nahezu symmetrisch ist nicht symmetrisch. Sie können nicht fast schwanger sein: entweder schwanger oder nicht.
Sergo Cusiani

2
Sicher, aber exakte Symmetrie in Daten ist so selten, dass, wenn ich "symmetrisch" gesagt hätte, jemand vernünftigerweise auch dagegen Einwände erheben könnte. Es ist sehr leicht, nahezu symmetrisch zu sein. Aus diesem Grund und auf diese Weise haben wir Maßstäbe für die Schiefe.
Nick Cox

1
Bemerkenswert, aber Ihr Kommentar war allgemein gehalten und es fehlte der Kontext, den Sie jetzt angeben. Ich sagte wiederum "zweifelhaft", nicht "falsch". Mein wichtigster Kommentar bleibt, dass Ihre Antwort dem Thread zur Auswahl der Behältergröße oder der entsprechenden Anzahl von Behältern nicht wirklich viel hinzufügt. Ein anderes Beispiel zu haben, in dem es schwierig ist, ist ein Dreh in der Frage, nicht wirklich eine Antwort.
Nick Cox
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.