Formula Doane untuk binning histogram

9

Saya menerapkan berbagai algoritme untuk memperkirakan jumlah sampah terbaik yang digunakan untuk histogram. Sebagian besar yang saya laksanakan dijelaskan pada halaman "Histogram" Wikipedia di bagian " Jumlah sampah dan lebar " *.

Saya terjebak pada masalah dengan rumus Doane:

1 + log(n) + log(1 + kurtosis(data) * sqrt(n / 6.))

dimana nukuran data.

Masalahnya adalah ketika kurtosis negatif dan n >> 1karena argumen logmenjadi negatif.

* (halaman itu telah berubah sejak ini diposting, tautan diedit untuk menunjuk ke halaman sebagaimana pada saat posting)

Ruggero Turra
sumber
1
Apakah Anda tahu jika rumus itu menggunakan kurtosis atau kelebihan kurtosis (yaitu apakah dist Normal memiliki 4 atau 0)?
Peter Flom
@PeterFlom: dalam makalah asli ( amstat.tandfonline.com/doi/pdf/10.1080/00031305.1976.10479172 ) kurtosis didefinisikan sebagai Skewness, tetapi saya bukan ahli. Makalah asli juga sangat berbeda dari rumus wikipedia
Ruggero Turra
1
Errr, apa? Kurtosis didefinisikan sebagai kecenderungan? Itu tidak masuk akal; mereka sangat berbeda. Saya tidak dapat mengakses kertas, tetapi sepertinya ada sesuatu yang kacau di suatu tempat.
Peter Flom
@PeterFlom Distribusi normal harus memiliki kurtosis 3 tidak 4.
Glen_b -Reinstate Monica
@PeterFlom Saya telah menyelidiki masalah skewness vs kurtosis - lihat "Edit 2" dalam jawaban saya.
Glen_b -Reinstate Monica

Jawaban:

11

Jawaban ini telah mengalami perubahan signifikan ketika saya menyelidiki halaman wikipedia. Saya telah meninggalkan jawaban sebagian besar sebagaimana mereka tetapi ditambahkan kepada mereka, jadi saat ini ini membentuk perkembangan pemahaman; bagian terakhir adalah tempat informasi terbaik.

Jawaban singkat: halaman wikipedia - dan formula OP, yang tampaknya sama - sama sekali salah, karena setidaknya tiga alasan berbeda. Saya akan meninggalkan diskusi asli saya (yang mengasumsikan bahwa OP dan wikipedia telah melakukannya dengan benar) karena itu menjelaskan beberapa masalah. Diskusi yang lebih baik mengikuti nanti. Saran singkatnya: lupakan saja Doane. Jika Anda harus menggunakannya, gunakan apa yang dikatakan wikipedia sekarang (saya perbaiki).


Saya percaya bahwa formula harus mengacu pada kelebihan kurtosis; alasan saya untuk itu adalah bahwa ia memodifikasi formula untuk data normal untuk memperhitungkan data yang tidak normal sehingga Anda akan mengharapkannya untuk mereproduksi yang tidak dimodifikasi di normal. Itu terjadi jika Anda menggunakan kurtosis berlebih.

0n

Saya juga menyarankan bahwa dalam hal apapun itu akan memberikan terlalu sedikit tempat sampah pada ukuran sampel besar, bahkan ketika itu berfungsi sebagaimana dimaksud.

Anda dapat menemukan makalah ini (oleh CVer Rob Hyndman ):

http://www.robjhyndman.com/papers/sturges.pdf

menarik. Jika argumen Sturges salah, rumus Doane memiliki masalah yang sama ... seperti yang ditulis Rob dengan jelas di koran.

Dalam makalah itu (dan dalam jawaban ini ) dia memberi anggukan pada aturan Freedman-Diaconis. Dalam makalah ia juga menunjuk ke pendekatan yang disebutkan oleh Matt Wand (ia merujuk pada kertas kerja yang tampaknya tidak online, tetapi makalah berikutnya tersedia jika Anda memiliki akses):

http://www.jstor.org/discover/10.2307/2684697

[Sunting: sebenarnya tautan ke kertas kerja ada di halaman citeseer ]

Pendekatan itu melibatkan sekitar memperkirakan fungsional tertentu untuk mendapatkan sekitar optimal (dalam hal rata-rata kesalahan kuadrat terintegrasi, MISE) lebar untuk memperkirakan kepadatan yang mendasarinya. Walaupun ini bekerja dengan baik dan memberikan lebih banyak nampan daripada Sturges atau Doane pada umumnya, kadang-kadang saya masih lebih suka menggunakan lebih banyak nampan, meskipun biasanya ini merupakan upaya pertama yang sangat bagus.

Terus terang saya tidak tahu mengapa pendekatan Wand (atau setidaknya aturan Fredman Diaconis) tidak menjadi default di mana-mana.

R setidaknya menawarkan perhitungan Freedman-Diaconis dari jumlah tempat sampah:

 nclass.FD(rnorm(100))
[1] 11
 nclass.FD(runif(100))
[1] 6
 nclass.FD(rt(100,1))
[1] 71

Lihat ?nclass.FD

Secara pribadi, bagi saya itu terlalu sedikit tempat sampah dalam dua kasus pertama setidaknya; Saya akan menggandakan keduanya meskipun fakta bahwa mungkin sedikit ribut daripada optimal. Ketika n menjadi besar, saya pikir itu sangat baik dalam banyak kasus.


Edit 2:

Saya memutuskan untuk menyelidiki masalah skewness vs kurtosis yang @PeterFlom dengan tepat menyatakan kebingungan.

Saya baru saja melihat kertas Doane yang ditautkan (saya pernah membacanya sebelumnya .... tapi itu hampir 30 tahun yang lalu) - tidak ada referensi sama sekali tentang kurtosis, hanya kemiringan.

Ke=log2(1+g1σg1)

Keg1b1

σg1=6(n2)(n+1)(n+3)6n

σg1. Sepertinya sudah diputar beberapa kali sebelum berakhir di sana; Saya akan tertarik jika ada yang melacaknya.

Menurut saya, argumen Doane seharusnya dengan senang hati meluas ke kurtosis, tetapi kesalahan standar yang benar harus digunakan.

Namun, karena Doane bergantung pada argumen Sturges dan Sturges tampaknya cacat, mungkin seluruh perusahaan akan hancur. Bagaimanapun saya telah mengedit halaman pembicaraan Histogram di wikipedia mencatat kesalahan.

---

b1

Glen_b -Reinstate Monica
sumber
b1
Kesalahan kecil dari skala itu (tidak adanya nilai absolut) terjadi tidak terlalu jarang di jurnal - statistik luar yang saya lihat jauh lebih jelas (dan lebih mengerikan). Adapun notasi, sebenarnya cukup umum; eg1 , eg2 , eg3 ... Saya bisa menunjuk ke puluhan
Glen_b -Reinstate Monica
2

Ukuran kurtosis yang didefinisikan dalam hal momen kedua dan keempat tidak pernah negatif ( lihat ), kemudian log(1+...)>0.

Kuantitas ini diimplementasikan dalam perintah kurtosis()dari perpustakaan R moments. Selain itu, menggunakan perintah hist()Anda dapat menentukan jumlah istirahat sebagai berikut

library(moments)

n <- 250
data <- rnorm(n)

# Sturges formula log_2(n) + 1
hist(data,breaks = "Sturges")

# Doane's formula    
Doane <- 1 + log(n) + log(1 + kurtosis(data) * sqrt(n / 6.))
hist(data,breaks = Doane)

Rumus yang digunakan dalam perintah kurtosis()itu sederhana mean((data - mean(data))^4)/mean((data - mean(data))^2)^2.

Sekarang, jika Anda ingin menyelidiki apa rumus `` terbaik '', maka Anda akan memerlukan kriteria. Pertimbangkan bahwa ini telah dibahas secara luas dalam literatur statistik.

Miles Davis
sumber
apa yang saya tidak tahu adalah apa definisi kurtosis dalam formula Doane
Ruggero Turra
Ada tautan ke definisi kurtosis di entri wikipedia yang Anda poskan. Kebetulan, itu sama dengan yang saya posting. Diperkirakan sebagai momen sentral sampel keempat dibagi dengan kuadrat momen pusat sampel kedua. Tolong, lihat edit saya untuk kode.
Miles Davis
1
lagi, saya tidak tahu apakah milik Anda adalah formula Doane yang benar, jika Anda melihat pada kertas contohnya ia menggunakan log2 sebagai ganti log
Ruggero Turra
Nah, itulah "formula Doane" yang Anda posting ¬¬ . Pokoknya, ini bisa sepele dikoreksi dengan menggunakan log(n,2)bukan log(n). TETAPI, entri wikipedia serta sumber-sumber lain menunjukkan bahwa itu seharusnya log.
Miles Davis