Interesuje mnie znalezienie możliwie optymalnej metody określania, ile pojemników powinienem użyć na histogramie. Moje dane powinny mieścić się w przedziale od 30 do 350 obiektów, a w szczególności staram się stosować próg (taki jak metoda Otsu), w którym „dobre” obiekty, których powinienem mieć mniej i które powinny być bardziej rozproszone, są oddzielone od „ złe ”obiekty, które powinny mieć większą gęstość. Konkretna wartość miałaby wynik 1-10 dla każdego obiektu. Miałem 5-10 obiektów z ocenami 6-10 i 20-25 obiektów z wynikami 1-4. Chciałbym znaleźć wzorzec grupowania histogramu, który ogólnie pozwala, by metoda taka jak Otsu przekroczyła próg słabo punktowanych obiektów. Jednak w implementacji Otsu widziałem, rozmiar pojemnika wynosił 256 i często mam dużo mniej punktów danych niż 256, co dla mnie sugeruje, że 256 nie jest dobrym numerem bin. Przy tak małej ilości danych, jakie podejścia powinienem zastosować do obliczenia liczby używanych pojemników?
źródło
Odpowiedzi:
Freedman-Diaconis zasada jest bardzo solidna i dobrze sprawdza się w praktyce. Szerokość przedziału jest ustawiona na . Tak więc liczba przedziałów wynosi , gdzie jest liczbą obserwacji, max jest wartością maksymalną, a min jest wartością minimalną.h=2×IQR×n−1/3 (max−min)/h n
W bazie R możesz użyć:
W przypadku innych bibliotek kreślących bez tej opcji (np.
ggplot2
) Można obliczyć przepustowość jako:źródło
IQR
?num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
nclass.FD
nie istniało dziewięć lat temu.Jeśli użyjesz zbyt mało pojemników, histogram nie przedstawia bardzo dobrze danych. Jeśli masz zbyt wiele pojemników, masz wygląd zepsutego grzebienia, co również nie daje poczucia rozkładu.
Jednym z rozwiązań jest stworzenie wykresu pokazującego każdą wartość. Albo wykres punktowy, albo skumulowany rozkład częstotliwości, który nie wymaga żadnych pojemników.
Jeśli chcesz utworzyć rozkład częstotliwości z równo rozmieszczonymi pojemnikami, musisz zdecydować, ile pojemników (lub ich szerokość). Decyzja wyraźnie zależy od liczby wartości. Jeśli masz dużo wartości, twój wykres będzie wyglądał lepiej i będzie bardziej pouczający, jeśli masz dużo pojemników. Na tej stronie wikipedii wymieniono kilka metod decydowania o szerokości pojemnika na podstawie liczby obserwacji. Najprostszą metodą jest ustawienie liczby pojemników równej pierwiastkowi kwadratowemu liczby wartości, które są grupowane.
Ta strona Hideaki Shimazaki wyjaśnia alternatywną metodę. Obliczenie jest nieco bardziej skomplikowane, ale wydaje się, że wykonuje świetną robotę. Górna część strony to aplikacja Java. Przewiń to, aby zobaczyć teorię i wyjaśnienia, a następnie przewijaj, aby znaleźć linki do dokumentów wyjaśniających tę metodę.
źródło
Może interesujący będzie tekst „ Wariacje na histogramie ” Denby'ego i Mallowsa:
Wspominają również, że kod w R jest dostępny na żądanie.
źródło
Nie jestem pewien, czy jest to dobra praktyka, ale zwykle tworzę więcej niż jeden histogram o różnych szerokościach bin i wybieram histogram, którego histgram użyć, na podstawie tego, który histgram pasuje do interpretacji, którą staram się najlepiej przekazać. Chociaż wprowadza to pewną obiektywność w wyborze histogramu, uzasadniam to tym, że miałem znacznie więcej czasu na zrozumienie danych niż osoba, której podaję histogram, więc muszę przekazać im bardzo zwięzły komunikat.
Jestem także wielkim fanem prezentowania histogramów z taką samą liczbą punktów w każdym przedziale, a nie taką samą szerokością. Zazwyczaj uważam, że reprezentują one dane znacznie lepiej niż stała szerokość pojemnika, chociaż są trudne do wytworzenia.
źródło
Czy widziałeś metodę Shimazaki-Shinomoto ?
Chociaż wydaje się być drogie obliczeniowo, może dać dobre wyniki. Warto spróbować, jeśli czas obliczeniowy nie jest twoim problemem. Istnieje kilka implementacji tej metody w języku Java, MATLAB itp. W następującym linku, który działa wystarczająco szybko: interfejs WWW
źródło
Jeśli muszę programowo określić liczbę pojemników, zwykle zaczynam od histogramu, który ma znacznie więcej pojemników niż potrzeba. Po wypełnieniu histogramu łączę pojemniki, aż będę mieć wystarczającą liczbę wpisów na pojemnik dla używanej metody, np. Jeśli chcę modelować niepewności Poissona w eksperymencie z liczeniem z niepewnościami z rozkładu normalnego, dopóki nie będę mieć więcej niż około 10 wpisy.
źródło
Proszę zobaczyć tę odpowiedź jako uzupełnienie odpowiedzi Roba Hyndmana .
Aby utworzyć wykresy histogramów z dokładnie tymi samymi przedziałami lub „szerokościami” przy użyciu reguły Freedman – Diaconis albo z podstawowym R lub
ggplot2
pakietem, możemy użyć jednej z wartościhist()
funkcji mianowiciebreaks
. Załóżmy, że chcemy utworzyć histogramqsec
zmtcars
danych przy użyciu reguły Freedman – Diaconis. W podstawowym R używamyTymczasem w
ggplot2
pakiecie używamyLub alternatywnie
Wszystkie generują wykresy histogramów z dokładnie tymi samymi przedziałami i liczbą przedziałów, jak zamierzono.
źródło
Mam 600 obserwacji dla Au g / t. Rozmiar pojemnika 1 daje mi to:
Automatyczny wybór (pomijając zakres bin) daje to:
Dane wyglądają O'K na pierwszym i drugim wykresie, tak jakby nie było 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
Mój osąd: 1. Na Ziemi nie ma techniki pomiaru, która pokazałaby prawdziwą wartość zjawiska naturalnego. Wszystkie pomiary są przybliżone, niektóre z nich są bliskie prawdziwej wartości. Zależy to od projektu próbkowania, kalibracji, kwalifikacji człowieka itp. 2. Dlatego rozkład jest raczej wypaczony niż symetryczny. 3. Niemniej jednak kształt rozkładu powinien co najmniej w przybliżeniu przypominać „dzwonek”. Jeden dzwonek 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 tego, jak dokładne i precyzyjne były pomiary. Tak więc trzeba eksperymentalnie podnieść rozmiar pojemnika zamiast reguły wycinanej na kamieniu.
źródło