Kesulitan menggunakan histogram untuk menyimpulkan bentuk
Sementara histogram seringkali berguna dan terkadang berguna, mereka bisa menyesatkan. Penampilan mereka dapat berubah cukup banyak dengan perubahan lokasi batas bin.
Masalah ini telah lama diketahui *, meskipun mungkin tidak seluas yang seharusnya - Anda jarang melihatnya disebutkan dalam diskusi tingkat dasar (meskipun ada pengecualian).
* misalnya, Paul Rubin mengatakannya seperti ini: " diketahui bahwa mengubah titik akhir dalam histogram dapat secara signifikan mengubah penampilannya ". .
Saya pikir ini adalah masalah yang harus dibahas secara lebih luas ketika memperkenalkan histogram. Saya akan memberikan beberapa contoh dan diskusi.
Mengapa Anda harus waspada mengandalkan histogram tunggal dari kumpulan data
Lihatlah empat histogram ini:
Itu empat histogram yang terlihat sangat berbeda.
Jika Anda menempelkan data berikut ini (Saya menggunakan R di sini):
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)
Kemudian Anda dapat menghasilkannya sendiri:
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)
Sekarang lihat diagram strip ini:
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)
(Jika masih belum jelas, lihat apa yang terjadi ketika Anda mengurangi data Annie dari setiap set head(matrix(x-Annie,nrow=40))
:)
Data hanya bergeser ke kiri setiap kali dengan 0,25.
Namun kesan yang kami dapatkan dari histogram - condong ke kanan, seragam, condong ke kiri dan bimodal - sangat berbeda. Kesan kami sepenuhnya diatur oleh lokasi tempat asal pertama relatif terhadap minimum.
Jadi bukan hanya 'eksponensial' vs 'tidak-benar-benar-eksponensial' tetapi 'condong ke kanan' vs 'condong ke kiri' atau 'bimodal' vs 'seragam' hanya dengan memindahkan tempat sampah Anda mulai.
Sunting: Jika Anda memvariasikan binwidth, Anda bisa mendapatkan hal-hal seperti ini terjadi:
Itu 34 pengamatan yang sama dalam kedua kasus, hanya breakpoints berbeda, satu dengan binwidth dan yang lainnya dengan binwidth .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)
Bagus, kan?
Ya, data itu sengaja dibuat untuk melakukan itu ... tapi pelajarannya jelas - apa yang Anda pikir Anda lihat dalam histogram mungkin bukan kesan yang akurat tentang data tersebut.
Apa yang bisa kita lakukan?
Histogram banyak digunakan, sering kali nyaman untuk didapatkan dan kadang-kadang diharapkan. Apa yang bisa kita lakukan untuk menghindari atau mengurangi masalah seperti itu?
Seperti yang ditunjukkan Nick Cox dalam komentar untuk pertanyaan terkait : Aturan praktis harus selalu detail yang kuat untuk variasi dalam lebar bin dan asal bin mungkin asli; detail yang rapuh seperti itu cenderung palsu atau sepele .
Paling tidak, Anda harus selalu melakukan histogram di beberapa binwidth atau tempat asal yang berbeda, atau lebih baik keduanya.
Atau, periksa perkiraan kepadatan kernel pada lebar pita yang tidak terlalu lebar.
Satu pendekatan lain yang mengurangi kesewenang-wenangan histogram adalah rata - rata perubahan histogram ,
(itu salah satu dari kumpulan data terbaru) tetapi jika Anda pergi ke upaya itu, saya pikir Anda mungkin juga menggunakan estimasi kepadatan kernel.
Jika saya melakukan histogram (saya menggunakannya meskipun sangat menyadari masalah ini), saya hampir selalu lebih suka menggunakan nampan jauh lebih banyak daripada yang biasanya diberikan oleh bawaan program dan sangat sering saya suka melakukan beberapa histogram dengan lebar bin yang bervariasi. (dan, terkadang, asal). Jika mereka konsisten dalam kesan, Anda tidak mungkin memiliki masalah ini, dan jika mereka tidak konsisten, Anda tahu untuk melihat lebih hati-hati, mungkin mencoba estimasi kepadatan kernel, CDF empiris, plot QQ atau sesuatu serupa.
Walaupun histogram terkadang menyesatkan, boxplots bahkan lebih rentan terhadap masalah seperti itu; dengan boxplot Anda bahkan tidak memiliki kemampuan untuk mengatakan "gunakan lebih banyak sampah". Lihat empat set data yang sangat berbeda dalam postingan ini , semuanya dengan plotplot simetris yang identik, meskipun salah satu set datanya cukup miring.
[1]: Rubin, Paul (2014) "Penyalahgunaan Histogram!",
Posting blog, ATAU di dunia OB , 23 Januari 2014
tautan ... (tautan alternatif)