Trudność z użyciem histogramów do wnioskowania o kształcie
Chociaż histogramy są często przydatne, a czasem przydatne, mogą wprowadzać w błąd. Ich wygląd może się znacznie zmienić wraz ze zmianami lokalizacji granic pojemników.
Problem ten jest od dawna znany *, ale może nie tak szeroko, jak powinien być - rzadko można go wspomnieć w dyskusjach na poziomie podstawowym (choć są wyjątki).
* na przykład Paul Rubin [1] ujął to w następujący sposób: „ dobrze wiadomo, że zmiana punktów końcowych na histogramie może znacząco zmienić jego wygląd ”. .
Myślę, że jest to kwestia, którą należy szerzej omówić podczas wprowadzania histogramów. Dam kilka przykładów i dyskusji.
Dlaczego powinieneś uważać na poleganie na jednym histogramie zestawu danych
Spójrz na te cztery histogramy:
To cztery bardzo różne histogramy.
Jeśli wkleisz następujące dane (używam tutaj R):
Annie <- c(3.15,5.46,3.28,4.2,1.98,2.28,3.12,4.1,3.42,3.91,2.06,5.53,
5.19,2.39,1.88,3.43,5.51,2.54,3.64,4.33,4.85,5.56,1.89,4.84,5.74,3.22,
5.52,1.84,4.31,2.01,4.01,5.31,2.56,5.11,2.58,4.43,4.96,1.9,5.6,1.92)
Brian <- c(2.9, 5.21, 3.03, 3.95, 1.73, 2.03, 2.87, 3.85, 3.17, 3.66,
1.81, 5.28, 4.94, 2.14, 1.63, 3.18, 5.26, 2.29, 3.39, 4.08, 4.6,
5.31, 1.64, 4.59, 5.49, 2.97, 5.27, 1.59, 4.06, 1.76, 3.76, 5.06,
2.31, 4.86, 2.33, 4.18, 4.71, 1.65, 5.35, 1.67)
Chris <- c(2.65, 4.96, 2.78, 3.7, 1.48, 1.78, 2.62, 3.6, 2.92, 3.41, 1.56,
5.03, 4.69, 1.89, 1.38, 2.93, 5.01, 2.04, 3.14, 3.83, 4.35, 5.06,
1.39, 4.34, 5.24, 2.72, 5.02, 1.34, 3.81, 1.51, 3.51, 4.81, 2.06,
4.61, 2.08, 3.93, 4.46, 1.4, 5.1, 1.42)
Zoe <- c(2.4, 4.71, 2.53, 3.45, 1.23, 1.53, 2.37, 3.35, 2.67, 3.16,
1.31, 4.78, 4.44, 1.64, 1.13, 2.68, 4.76, 1.79, 2.89, 3.58, 4.1,
4.81, 1.14, 4.09, 4.99, 2.47, 4.77, 1.09, 3.56, 1.26, 3.26, 4.56,
1.81, 4.36, 1.83, 3.68, 4.21, 1.15, 4.85, 1.17)
Następnie możesz je wygenerować samodzielnie:
opar<-par()
par(mfrow=c(2,2))
hist(Annie,breaks=1:6,main="Annie",xlab="V1",col="lightblue")
hist(Brian,breaks=1:6,main="Brian",xlab="V2",col="lightblue")
hist(Chris,breaks=1:6,main="Chris",xlab="V3",col="lightblue")
hist(Zoe,breaks=1:6,main="Zoe",xlab="V4",col="lightblue")
par(opar)
Teraz spójrz na ten pasek:
x<-c(Annie,Brian,Chris,Zoe)
g<-rep(c('A','B','C','Z'),each=40)
stripchart(x~g,pch='|')
abline(v=(5:23)/4,col=8,lty=3)
abline(v=(2:5),col=6,lty=3)
(Jeśli nadal nie jest to oczywiste, zobacz, co się stanie, gdy odejmiesz dane Annie z każdego zestawu head(matrix(x-Annie,nrow=40))
:)
Dane po prostu przesuwano za każdym razem o 0,25.
Jednak wrażenia, które otrzymujemy z histogramów - prawe pochylenie, jednolite, lewe pochylenie i bimodalne - były zupełnie inne. Nasze wrażenie w całości zależało od położenia pierwszego bin-origin względem minimum.
Więc nie tylko „wykładniczy” vs.
Edycja: Jeśli zmienisz przepustowość, możesz uzyskać takie rzeczy:
To te same 34 obserwacje w obu przypadkach, tylko różne punkty przerwania, jedno z szerokością przedziału a drugie z przedziałem szerokości .0,810.8
x <- c(1.03, 1.24, 1.47, 1.52, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97, 1.98,
1.99, 2.72, 2.75, 2.78, 2.81, 2.84, 2.87, 2.9, 2.93, 2.96, 2.99, 3.6,
3.64, 3.66, 3.72, 3.77, 3.88, 3.91, 4.14, 4.54, 4.77, 4.81, 5.62)
hist(x,breaks=seq(0.3,6.7,by=0.8),xlim=c(0,6.7),col="green3",freq=FALSE)
hist(x,breaks=0:8,col="aquamarine",freq=FALSE)
Zręczne, co?
Tak, te dane zostały celowo wygenerowane, aby to zrobić ... ale lekcja jest jasna - to, co myślisz, że widzisz na histogramie, może nie być szczególnie dokładnym wrażeniem danych.
Co możemy zrobić?
Histogramy są szeroko stosowane, często wygodne do uzyskania i czasami oczekiwane. Co możemy zrobić, aby uniknąć lub złagodzić takie problemy?
Jak zauważył Nick Cox w komentarzu do powiązanego pytania : ogólna zasada powinna zawsze polegać na tym, że szczegóły odporne na różnice w szerokości i pochodzeniu pojemnika mogą być prawdziwe; kruche szczegóły mogą być fałszywe lub trywialne .
Przynajmniej zawsze powinieneś robić histogramy dla kilku różnych szerokości lub początków bin, a najlepiej obu.
Ewentualnie sprawdź oszacowanie gęstości jądra przy niezbyt szerokim paśmie.
Innym podejściem, które zmniejsza arbitralność histogramów, są uśrednione przesunięte histogramy ,
(to jeden z najnowszego zestawu danych), ale jeśli podejmiesz ten wysiłek, myślę, że równie dobrze możesz użyć oszacowania gęstości jądra.
Jeśli wykonuję histogram (używam ich, mimo że jestem bardzo świadomy problemu), prawie zawsze wolę używać znacznie więcej pojemników niż typowe ustawienia domyślne programu i bardzo często lubię robić kilka histogramów o różnej szerokości pojemnika (i czasami pochodzenie). Jeśli są w miarę spójne pod względem wrażeń, prawdopodobnie nie masz tego problemu, a jeśli nie są spójne, wiesz, aby przyjrzeć się dokładniej, być może spróbuj oszacować gęstość jądra, empiryczny CDF, wykres QQ lub coś takiego podobny.
Podczas gdy histogramy mogą czasem wprowadzać w błąd, wykresy pudełkowe są jeszcze bardziej podatne na takie problemy; dzięki wykresowi pudełkowemu nie możesz nawet powiedzieć „użyj więcej pojemników”. Zobacz cztery bardzo różne zestawy danych w tym poście , wszystkie z identycznymi, symetrycznymi wykresami pudełkowymi, nawet jeśli jeden z tych zestawów danych jest dość wypaczony.
[1]: Rubin, Paul (2014) „Histogram Abuse!”,
Post na blogu LUB w świecie OB , 23 stycznia 2014
link ... (alternatywny link)