Doane'nin histogram bölmesi için formülü


9

Histogramlar için kullanılacak en iyi kutu sayısını tahmin etmek için çeşitli algoritmalar uyguluyorum. Uyguladığımların çoğu, "Kutu sayısı ve genişlik " * bölümündeki Wikipedia "Histogram" sayfasında açıklanmaktadır .

Doane'nin formülü ile ilgili bir soruna takılı kaldım:

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

nveri boyutu nerede .

Sorun, basıklığın negatif olduğu ve n >> 1bunun tartışmasının logolumsuz hale geldiği zamandır.

* (bu sayfa yayınlanmasından bu yana değişti, bağlantı, yayınlandığı zamandaki sayfayı gösterecek şekilde düzenlendi)


1
Bu formülün basıklık veya fazla basıklık kullanıp kullanmadığını biliyor musunuz (yani Normal dist 4 veya 0'a sahip mi)?
Peter Flom

@PeterFlom: orijinal gazetede ( amstat.tandfonline.com/doi/pdf/10.1080/00031305.1976.10479172 ) basıklık Skewness olarak tanımlanır, ancak uzman değilim. Orijinal makale wikipedia formülünden de oldukça farklı
Ruggero Turra

1
Errr, ne? Basıklık çarpıklık olarak mı tanımlanır? Bu mantıklı değil; onlar çok farklı. Kağıda erişemiyorum, ama bir yere bir şey karışmış gibi geliyor.
Peter Flom

@PeterFlom Normal dağılımda 3 değil 4 basıklık olmalıdır.
Glen_b -Restate Monica

@PeterFlom Çarpıklık ve basıklık sorununu araştırıyordum - cevabımda "Düzenle 2" ye bakın.
Glen_b

Yanıtlar:


11

Ben wikipedia sayfasını araştırırken bu cevap önemli değişiklikler geçirdi. Cevapları büyük ölçüde oldukları gibi bıraktım, ancak onlara eklendiğim için, şu anda bu bir anlayış ilerlemesi; son kısımlar en iyi bilginin olduğu yerlerdir.

Kısa cevap: wikipedia sayfası - ve aynı görünen OP'nin formülü - en az üç farklı nedenden dolayı yanlış. Orijinal tartışmamı bırakacağım (bu OP ve wikipedia'nın doğru olduğunu varsaydı) çünkü bu bazı sorunları açıklıyor. Daha sonra tartışma daha iyi olur. Kısa tavsiye: Doane'yi unutun. Eğer varsa gerekir kullanmak, wikipedia diyor kullanmak artık (tamir ettim).


Formülün fazla basıklık anlamına gelmesi gerektiğine inanıyorum; bunun nedeni normal olmayan verileri hesaba katmak için normal veriler için bir formülde değişiklik yapmasıdır. Böylece, değiştirilmemiş olanı normalde çoğaltmasını beklersiniz. Aşırı basıklık kullanırsanız bunu yapar.

Ancak bu, günlükteki terimin büyük örneklerle negatif olabileceği sorununu doğurur (gerçekten de, oldukça küçük ). Olumsuz aşırı basıklık ile kullanmamanızı öneririm (yine de unimodality'nin ötesinde kullanmam; her şey multimodal olsun, aşırı kurtosis fikrini her modda uygulamak istiyorsunuz , üzerlerinde yumuşak değil!) fazla basıklık sadece 0'dan az) ve mütevazı örnek boyutları büyük bir sorun olmayacaktır.0n

Ayrıca, her durumda, büyük örnek boyutlarında, istendiği gibi çalıştığında bile çok az sayıda kutu vereceğini öneririm.

Bu makaleyi bulabilirsiniz (normal CVer Rob Hyndman tarafından ):

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

bazı ilgi. Sturges'in argümanı yanlışsa, Doane'nin formülünün sorunu aynıdır ... Rob gazetede açıkça belirttiği gibi.

Bu makalede (ve bu cevapta ) Freedman-Diaconis kuralına başını salladı. Makalede ayrıca Matt Wand tarafından belirtilen yaklaşıma da işaret ediyor (çevrimiçi görünmeyen çalışma kağıdını ifade ediyor, ancak erişiminiz varsa sonraki makale kullanılabilir):

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

[Düzenle: aslında çalışma kağıdına bağlantı sitenin sayfasında ]

Bu yaklaşım, altta yatan yoğunluğu tahmin etmek için yaklaşık optimal (ortalama entegre kare hata, MISE) kutu genişliklerinin elde edilmesi için belirli işlevlerin tahmin edilmesini içerir. Bunlar iyi çalışıyor ve genel olarak Sturges veya Doane'den daha fazla kutu verirken, bazen yine de daha fazla kutu kullanmayı tercih ederim, ancak genellikle çok iyi bir ilk girişimdir.

Açıkçası Wand'ın yaklaşımının (ya da en azından Fredman Diaconis kuralının) neden hemen hemen her yerde bir varsayılan olmadığını bilmiyorum.

R en azından kutu sayısının Freedman-Diaconis hesaplamasını sunar:

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

Görmek ?nclass.FD

Şahsen, benim için en azından ilk iki durumda çok az sayıda çöp kutusu; Optimalden biraz daha gürültülü olabilmesine rağmen, ikisini de ikiye katlardım. N büyüdükçe, çoğu durumda çok iyi olduğunu düşünüyorum.


Düzenleme 2:

@PeterFlom 'un haklı olarak şaşkınlıkla ifade ettiği çarpıklık ve basıklık sorununu araştırmaya karar verdim.

Ben sadece (daha önce okudum .... ama bu neredeyse 30 yıl önce oldu) bağlı Doane kağıt wiso bir göz vardı - bu sadece çarpıklık, basıklık hiçbir referans yapar.

Doane'nin gerçek formülü:Ke=lÖg2(1+g1σg1)

nerede Keeklenen kutu sayısı, 3. andaki çarpıklıktır. [Aslında, Doane, zamanın oldukça yaygın kullanımını takiben , imzalı (!) 3. an çarpıklığı için kullanıyor (bu özellikle birleştirici olmayan kötüye kullanımın kökeni oldukça eski ve takip etmeyeceğim Neyse ki şimdi çok daha az sıklıkta göründüğünü söylemek dışında).]g1b1

Şimdi normalde, (n yaklaşık 100'ü geçene kadar bu yaklaşım oldukça zayıf olsa da; Doane ilk formu kullanır)σg1=6(n-2)(n+1)(n+3)6n

Bununla birlikte, birisinin onu basıkçığa adapte etmeye çalıştığı gibi görünüyor (bu Vikipedi yazarken basıklık açısından var , ve bunu yaptıklarını sanmıyorum) - ama açık bir sebep var formülün basitçe yanlış olduğuna inanmak için (kullanılan standart hatanın, yukarıda verdiğim çarpıklık için nihai yaklaşım olduğunu unutmayın). Bence bu bastosis kullanımını wikipedia dışında çeşitli yerlerde gördüm, ancak Doane'nin gazetesinde olmanın yanı sıra, Scott'ın gazetesinde, işaret ettiğim Hyndman gazetesinde veya Wand'ın gazetesinde bulunmuyor. Ancak bir yerden gelmiş gibi görünüyor (yani wikipedia için orijinal olmadığından eminim), çünkü Doaneσg1. Orada sona ermeden önce birkaç kez oynanmış gibi görünüyor; Birisi onu bulsaydı ilgilenirim.

Bana Doane'in argümanının mutlu bir şekilde basıklık derecesine uzanması gerektiği gibi görünüyor , ancak doğru standart hatanın kullanılması gerekiyordu.

Bununla birlikte, Doane, Sturges ve Sturges'in argümanı kusurlu gibi göründüğünden, belki de tüm işletme mahkumdur. Her halükarda, wikipedia'daki Histogram konuşma sayfasını hatayı not ederek düzenledim.

---

Edit 3: Vikipedi sayfasını düzelttim (ancak çarpıklığın mutlak değerini alma özgürlüğünü aldım, aksi halde Doane'nin orijinal formülü durduğu gibi sol eğimli dağılımlar için kullanılamaz - açıkça işaretler çarpıklık önemsizdir). Kesin olarak, formülü orijinal (yanlış) formda sunmalıydım ve sonra neden mantıklı olmadığını açıklamalıyım, ancak bunun birkaç nedenden dolayı sorunlu olduğunu düşünüyorum - en azından insanların sadece formülü kopyalayıp görmezden gelme eğiliminde olacağı açıklama. Aslında Doane'nin orijinal niyetini kapsadığına inanıyorum. Her durumda, orijinalindeki saçmalık üzerinde büyük bir gelişme. (Lütfen orijinal makaleye erişebilen, bu makaleye ve nasılb1 tanımlanır ve makul olduğundan emin olmak için wikipedia'daki değişikliklerimi kontrol edin - yanlış en az üç şey vardı - basıklık, standart hata ve yanlış günlük tabanı, artı Doane'nin kendi küçük hatası.)


çok teşekkür ederim. Bu arada "Amerikan İstatistikçisi" nde böyle bir hata gördüğüme şaşırdım. Notasyonu hiç görmedimb1.
Ruggero Turra

Bu ölçeğin küçük hataları (mutlak değerin yokluğu) dergilerde nadiren meydana gelmez - dış istatistikler çok daha açık (ve daha açıklayıcı) gördüm. Gösterime gelince, aslında oldukça yaygındır; EG1 , eg2 , EG3 ... Ben onlarca işaret olabilir
Glen_b -Reinstate Monica

2

İkinci ve dördüncü momentler olarak tanımlanan basıklık ölçüsü asla negatif değildir ( bkz. ) log(1+...)>0.

Bu miktar, kurtosis()R kitaplığındaki komutta uygulanır moments. Ayrıca, komutu kullanarak hist()mola sayısını aşağıdaki gibi belirleyebilirsiniz

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)

Komutta kullanılan formül kurtosis()basittir mean((data - mean(data))^4)/mean((data - mean(data))^2)^2.

Şimdi, `` en iyi '' formülün ne olduğunu araştırmak istiyorsanız, o zaman bir kritere ihtiyacınız olacak. Bunun istatistiksel literatürde tartışıldığını düşünün.


ne bilmiyorum Doane'nin formülündeki kurtosis nedir
Ruggero Turra

Gönderdiğiniz wikipedia girişinde basıklık tanımına bir bağlantı vardır. Bu arada, gönderdiğim ile aynı. Dördüncü örnek merkezi momentin, ikinci örnek merkezi momentin karesine bölünmesiyle hesaplanır. Lütfen kod için yaptığım düzenlemeye bakın.
Miles Davis

1
yine, seninkinin doğru Doane formülü olup olmadığını bilmiyorum, eğer kağıda bakarsanız, örneğin log yerine log2 kullanıyor
Ruggero Turra

That, Do gönderdiğin "Doane formülü" . Her neyse, bu log(n,2)yerine kullanılarak önemsiz bir şekilde düzeltilebilir log(n). ANCAK, wikipedia girişi ve diğer kaynaklar olması gerektiğini gösterir log.
Miles Davis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.