Histogram

Doane 的直方圖分箱公式

  • April 4, 2013

我正在實施各種算法來估計用於直方圖的最佳箱數。我正在實施的大多數都在維基百科“直方圖”頁面的“箱數和寬度”部分中進行了描述*。

我被 Doane 的公式所困擾:

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

n數據大小在哪裡。

問題是當峰度為負時,n >> 1因為 的參數log變為負。

*(該頁面自發布以來已更改,鏈接已編輯為指向發佈時的頁面)

當我調查維基百科頁面時,這個答案發生了重大變化。我基本上保留了答案,但添加了它們,所以目前這形成了理解的進展;最後一部分是最好的信息所在。

簡短的回答:維基百科頁面(在發布問題時) - 以及似乎相同的 OP 公式 - 完全是錯誤的,至少有三個不同的原因。我將留下我最初的討論(假設 OP 和 Wikipedia 是正確的),因為這解釋了一些問題。稍後進行更好的討論。簡短的建議:忘記 Doane。如果您必須使用它,請使用 Wikipedia**現在所說的(我已修復)。


我認為公式必須指的是過度峰度;我這樣做的原因是它修改了正常數據的公式以解釋非正常數據,因此您希望它能夠以正常方式重現未修改的公式。如果您使用過多的峰度,它會這樣做。

然而,這確實會引發一個問題,即日誌中的術語在大樣本時可能會變為負數(實際上,有可能是 $ \leq 0 $ 在很小的時候 $ n $ )。我建議不要在負超峰度的情況下使用它(無論如何,我永遠不會在單峰之外使用它;一旦事情變得多峰,你想將超峰度想法應用於每種模式,而不是平滑它們!),儘管有輕微的情況(過度峰度剛好小於 0)和適度的樣本量,這不會是一個大問題。

我還建議,在任何情況下,即使它按預期工作,它也會在大樣本量下提供太少的垃圾箱。

您可以找到這篇論文(由普通 CVer Rob Hyndman撰寫):

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

有些興趣。如果 Sturges 的論點是錯誤的,Doane 的公式也有同樣的問題……正如 Rob 在論文中明確指出的那樣。

在那篇論文中(以及在這個答案中),他對 Freedman-Diaconis 規則表示贊同。在論文中,他還指出了 Matt Wand 提到的方法(他指的是工作論文,該論文似乎並不在線,但如果您可以訪問,則可以使用後續論文):

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

[編輯:實際上工作文件的鏈接在citeseer 頁面上]

該方法涉及近似估計特定功能以獲得近似最優的(根據均方積分平方誤差,MISE)用於估計基礎密度的箱寬度。雖然這些工作得很好並且提供了比 Sturges 或 Doane 更多的垃圾箱,但有時我仍然更喜歡使用更多的垃圾箱,儘管這通常是一個非常好的第一次嘗試。

坦率地說,我不知道為什麼 Wand 的方法(或者至少是 Freedman-Diaconis 規則)在幾乎所有地方都不是默認的。

R 至少提供了對 bin 數量的 Freedman-Diaconis 計算:

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

?nclass.FD

就我個人而言,至少在前兩種情況下,垃圾箱太少了;儘管它可能比最佳值更嘈雜,但我會將兩者都加倍。作為 $ n $ 變大,我認為它在大多數情況下都做得很好。


編輯2:

我決定調查@PeterFlom 正確表達困惑的偏度與峰度問題。

我剛剛看了與 wiso 相關的 Doane 論文(我以前讀過它……但那是差不多 30 年前的事了)——它根本沒有提到峰度,只提到了偏度。

多恩的實際公式是: $ K_e = \log_2(1+\frac{g_1}{\sigma_{g_1}}) $

在哪裡 $ K_e $ 是添加的 bin 數量, $ g_1 $ 是第三時刻偏度。[實際上,Doane 按照當時相當普遍的用法,使用 $ \sqrt{b_1} $ 對於已簽名的(!) 3rd moment skewness(這種特別不具啟發性的符號濫用的起源已經很老了,我不打算追究它,除非說幸運的是它現在出現的頻率要低得多)。]

現在在正常情況下, $ \sigma_{g_1} = \sqrt{\frac{6(n-2)}{(n+1)(n+3)}} \approx \sqrt{\frac{6}{n}} $

(雖然這個近似值很差,直到 $ n $ 遠遠超過100;Doane 使用第一種形式)。

但是,似乎在此過程中有人試圖使其適應峰度(例如,在我撰寫此維基百科時,它以峰度表示,我認為他們沒有編造出來)-但有明確的理由相信這個公式是完全錯誤的(請注意,使用的標準誤差是我上面給出的偏度 se 的最終近似值)。我想我已經在維基百科以外的幾個地方看到過這種峰度的使用,但除了沒有出現在 Doane 的論文中之外,它也沒有出現在 Scott 的論文中,也沒有出現在我指向的 Hyndman 論文中,也沒有出現在 Wand 的論文中。然而,它似乎確實來自某個地方(即我確信它不是維基百科的原創),因為 Doane 沒有近似於 $ \sigma_{g_1} $ . 看起來它在它結束之前已經玩了好幾次了;如果有人追踪它,我會很感興趣。

在我看來,Doane 的論點應該很高興地擴展到峰態,但必須使用正確的標準錯誤

然而,由於多恩依賴斯特奇斯,而斯特奇斯的說法似乎有缺陷,或許整個企業注定要失敗。無論如何,我已經在維基百科上編輯了直方圖討論頁面,並指出了錯誤。


編輯 3:我已經更正了維基百科頁面(但我冒昧地取了偏度的絕對值,否則 Doane 的原始公式不能用於左偏分佈 - 顯然對於箱數的符號偏度無關緊要)。嚴格來說,我應該以原始(錯誤)形式呈現公式,然後解釋為什麼它沒有意義,但我認為這是有問題的,原因有幾個——尤其是人們會傾向於只複製公式而忽略解釋。我相信它實際上涵蓋了 Doane 的初衷。無論如何,它比原來的廢話有了很大的改進。(請任何可以訪問原始論文的人,看看它以及如何 $ \sqrt{b_1} $ 已定義並檢查我在 Wikipedia 上的更改以確保它是合理的 - 至少有三件事是錯誤的 - 峰度、標準錯誤和錯誤的日誌基數,加上 Doane 自己的小錯誤。)

引用自:https://stats.stackexchange.com/questions/55134

comments powered by Disqus