Obliczanie optymalnej liczby pojemników na histogramie

Jestem zainteresowany znalezieniem optymalnej metody określania, ile pojemników powinienem użyć w histogram. Moje dane powinny mieścić się w zakresie od 30 do 350 obiektów, aw szczególności staram się zastosować progowanie (jak metoda Otsu), gdzie „dobre” obiekty, których powinienem mieć mniej i powinny być bardziej rozproszone, są oddzielone od „złych” obiektów, które powinny mieć większą gęstość. Konkretna wartość miałaby punktację 1–10 dla każdego obiektu. Miałam 5–10 obiektów z oceną 6–10 i 20–25 obiektów z punktami 1-4. Chciałbym znaleźć wzór binningu histogramu, który generalnie umożliwia coś w rodzaju metody Otsu na progowanie obiektów o niskiej punktacji. Jednak w implementacji mechanizmu Otsu, który widziałem, rozmiar bin wynosił 256 i często mam o wiele mniej punktów danych niż 256, co dla mnie sugeruje, że 256 nie jest dobrą liczbą bin. Przy tak małej ilości danych, jakie podejście powinienem podjąć, aby obliczyć liczbę pojemników do użycia?

Komentarze

  • Myślę, że Sturges ' reguła może być użyta dla n < 200; gdzie n to liczba obserwacji

Odpowiedź

Reguła Freedmana-Diaconisa jest bardzo solidna i dobrze sprawdza się w praktyce. Bin-width jest ustawiona na $ h = 2 \ times \ text {IQR} \ times n ^ {- 1/3} $ . Więc liczba pojemników wynosi $ (\ max- \ min) / h $ , gdzie $ n $ to liczba obserwacji, max to wartość maksymalna, a min to wartość minimalna.

W bazie R możesz użyć:

 hist(x, breaks="FD")  

W przypadku innych bibliotek wydruku bez tej opcji (np. ggplot2) można obliczyć szerokość binningu jako:

 bw <- 2 * IQR(x) / length(x)^(1/3) ### for example ##### ggplot() + geom_histogram(aes(x), binwidth = bw)  

Komentarze

  • @nico. Wartość domyślna w R to breaks = ” Sturges „, co nie zawsze daje dobre wyniki.
  • Jak można obliczyć IQR?
  • @KurtMueller IQR oznacza przedział międzykwartylowy. Poszukaj pierwszego i trzeciego kwartylu, a różnica to IQR. IQR zawiera już R, więc możesz z niego korzystać.
  • Jeśli się nie mylę, odpowiedź powinna brzmieć num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
  • nclass.FD nie istniał dziewięć lat temu.

Odpowiedź

Jeśli używasz za mało pojemników, histogram nie przedstawia danych zbyt dobrze. Jeśli masz zbyt wiele pojemników, otrzymasz uszkodzony grzebień, który również nie daje poczucia rozkładu.

Jeden rozwiązaniem jest stworzenie wykresu pokazującego każdą wartość. Albo wykres kropkowy, albo skumulowany rozkład częstotliwości, który nie wymaga żadnych przedziałów.

Jeśli chcesz utworzyć rozkład częstotliwości z równo rozmieszczonymi przedziałami, musisz zdecydować, ile przedziałów (lub szerokość każdego). Decyzja wyraźnie zależy od liczby wartości. Jeśli masz dużo wartości, wykres będzie wyglądał lepiej i będzie zawierał więcej informacji, jeśli masz dużo przedziałów. To Strona wikipedii zawiera listę kilku metod określania szerokości przedziału na podstawie liczby obserwacji. Najprostszą metodą jest ustawienie liczby przedziałów równej pierwiastkowi kwadratowemu z liczby wartości, które dzielisz.

Ta strona od Hideaki Shimazaki wyjaśnia alternatywną metodę. Obliczenie jest nieco bardziej skomplikowane, ale wydaje się, że wykonuje świetną robotę. Górna część strony jest aplikacja Java. Przewiń, aby zobaczyć teorię i wyjaśnienie, a następnie przewijaj dalej, aby znaleźć linki do artykułów wyjaśniających metodę.

Komentarze

Odpowiedź

Może gazeta „ Interesujące będą odmiany histogramu ”autorstwa Denbyego i Mallowsa:

Ten nowy ekran, który nazywamy„ dhist ”(po przekątnej -cut histogram) zachowuje pożądane cechy zarówno histogramu o równej szerokości, jak i histogramu o równej powierzchni. Wyświetla wysokie wąskie przedziały, takie jak ea hist, gdy w danych występują skoki, i będzie pokazywać pojedyncze wartości odstające, tak jak zwykły histogram.

Wspomina również o ten kod w R jest dostępny na żądanie.

Odpowiedź

Czy widziałeś Shimazaki-Shinomoto ?

Chociaż wydaje się, że jest kosztowna obliczeniowo, może dać dobre wyniki. Warto spróbować, jeśli czas obliczeniowy nie jest Twoim problemem.Istnieje kilka implementacji tej metody w java, MATLAB itp. W poniższym linku, który działa wystarczająco szybko: interfejs internetowy

Komentarze

Odpowiedź

Nie jestem pewien, czy liczy się to jako ściśle dobra praktyka, ale staram się tworzyć więcej niż jeden histogram o różnych szerokościach i wybieram histogram, który ma użyj na podstawie tego, który histogram pasuje do interpretacji, którą staram się najlepiej przekazać. Chociaż wprowadza to pewną subiektywność do wyboru histogramu, uzasadniam to tym, że miałem znacznie więcej czasu na zrozumienie danych niż osoba, której przekazuję histogram, więc muszę przekazać im bardzo zwięzły komunikat.

Jestem także wielkim fanem przedstawiania histogramów z taką samą liczbą punktów w każdym przedziale, a nie z tą samą szerokością. Zwykle uważam, że reprezentują one dane znacznie lepiej niż stała szerokość pojemnika, chociaż są trudniejsze do wytworzenia.

Komentarze

  • przepraszam, powinienem był wspomnieć, że muszę to zrobić w sposób automatyczny. opcja ” robienia tego wiele razy, dopóki nie znajdę tego, który najlepiej pasuje do mojego celu ” wygrał ' nie działa dla mnie. należy wykonać obliczeniowo …
  • Zgadzam się – pomysł, że jest jeden ” optymalny ” bin szerokość jest ogromnym uproszczeniem.

Odpowiedź

Jeśli potrzebuję programowo określić liczbę pojemników, zazwyczaj zacznij od histogramu, który ma o wiele więcej pojemników niż potrzeba. Po wypełnieniu histogramu łączę pojemniki, aż będę mieć wystarczającą liczbę wpisów na pojemnik dla metody, której używam, np. jeśli chcę modelować niepewności Poissona w eksperymencie z liczeniem z niepewnościami z rozkładu normalnego, aż będę miał więcej niż około 10 wpisów.

Odpowiedź

Postrzegaj tę odpowiedź jako uzupełnienie Mr. Odpowiedź Roba Hyndmana .

Aby utworzyć wykresy histogramu z dokładnie tymi samymi interwałami lub „binwidths” przy użyciu reguły Freedmana – Diaconisa z podstawowym pakietem R lub ggplot2, możemy użyć jednego wartości funkcji hist(), a mianowicie breaks. Załóżmy, że chcemy utworzyć histogram qsec z danych mtcars przy użyciu reguły Freedmana – Diaconisa. W podstawowym R używamy

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

Tymczasem w ggplot2 pakiet, którego używamy

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

Lub alternatywnie

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

Wszystkie z nich generują wykresy histogramu z dokładnie tymi samymi interwałami i liczbą pojemników, jak zamierzano.

Odpowiedź

I mam 600 obserwacji dla Au g / t. Rozmiar pojemnika 1 daje mi to: tutaj wprowadź opis obrazu

Wybór automatyczny (pomijając przedział bin) daje to: tutaj wprowadź opis obrazu

Dane wyglądają na O „K na pierwszym i drugim wykresie, tak jakby nie ma problemu z integralnością danych. Tylko rozmiar pojemnika 0,1 (g / t) odpowiada na pytanie: pomiary były zarówno niedokładne, jak i nieprecyzyjne tutaj wprowadź opis obrazu

Moja ocena: 1. Jest brak techniki pomiarowej na Ziemi, która pokazałaby prawdziwą wartość zjawiska naturalnego. Wszystkie pomiary są przybliżone, a niektóre są zbliżone do rzeczywistej wartości. Zależy to od projektu pobierania próbek, kalibracji, kwalifikacji człowieka itp. 2. Dlatego rozkład jest raczej skośny niż symetryczny. 3. Niemniej jednak kształt rozkładu powinien przynajmniej w przybliżeniu przypominać „dzwonową” sekcję. Jeden dzwon na raz (chyba że istnieje kilka środowisk geologicznych). 4. Rozkład częstotliwości z manipulacją wielkością pojemnika może pomóc w ujawnieniu wzoru na temat dokładności i dokładności pomiarów. Więc trzeba eksperymentalnie określić rozmiar pojemnika, a nie regułę wyciętą na kamieniu.

Komentarze

  • To bardziej komentarz niż odpowiedź, chyba że przeliterujesz morał. ' powiem, że morał jest taki: wszystkie reguły są praktycznymi regułami, niektóre mają większą podstawę statystyczną niż inne, ale większość reguł może nie działać tak, jak chcesz, jeśli dystrybucje mają bardzo dużą skośność lub kurtoza. Dlatego też kieruj się własnym osądem.
  • Dodałeś komentarze, ale nie wiem, czy ktoś wniósł nowe pomocne informacje do wątku. 1.jest w porządku, ale nie jest to problem. 2. czy nie ' nie wynika z 1., ponieważ niektóre rozkłady są prawie symetryczne. 3. jest wątpliwa: istnieje wiele sytuacji, w których spodziewane są kształty inne niż dzwonki. 4. jest również wątpliwa, ponieważ jakość oryginalnych pomiarów często nie jest widoczna na żadnym histogramie, ale często najlepiej jest ją badać, zwracając uwagę na bardzo drobną strukturę rozkładu.
  • 2. Prawie symetryczny nie jest symetryczny. Nie możesz być prawie w ciąży: w ciąży lub nie.
  • Jasne, ale dokładna symetria danych jest tak rzadka, że gdybym powiedział ” symetryczny ” ktoś może również rozsądnie sprzeciwić się temu. ' bardzo łatwo jest być prawie symetrycznym; dlatego i jak mamy miary skośności.
  • Uwaga, ale Twój komentarz był ogólny i nie zawierał kontekstu, który teraz podajesz. Z kolei powiedziałem ” wątpliwe ” nie ” źle „. Moim głównym komentarzem jest to, że Twoja odpowiedź nie ' naprawdę nie wnosi wiele do wątku, jak wybrać rozmiar pojemnika lub równoważną liczbę pojemników. Kolejny przykład, w którym ' jest trudny, to obrót pytania, a nie odpowiedź.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *