Rule-of-Thumb

計算直方圖中的最佳箱數

  • July 27, 2010

我有興趣找到盡可能優化的方法來確定我應該在直方圖中使用多少個 bin。我的數據最多應該在 30 到 350 個對象之間,特別是我正在嘗試應用閾值處理(如 Otsu 的方法),其中“好”對象(我應該更少並且應該更分散)與“壞”的對象,它的價值應該更密集。對於每個對象,具體值的得分為 1-10。我有 5-10 個分數為 6-10 的對象,以及 20-25 個分數為 1-4 的對象。我想找到一個直方圖分箱模式,它通常允許像 Otsu 的方法這樣的方法來限制低得分對象。但是,在我見過的 Otsu 的實現中,bin 大小為 256,而且我的數據點通常比 256 少得多,對我來說,這表明 256 不是一個好的 bin 編號。數據這麼少,我應該採取什麼方法來計算要使用的 bin 數量?

Freedman-Diaconis規則非常穩健並且在實踐中運行良好。bin-width 設置為 $ h=2\times\text{IQR}\times n^{-1/3} $ . 所以箱子的數量是 $ (\max-\min)/h $ , 在哪裡 $ n $ 是觀察次數,max 是最大值,min 是最小值。

在基礎 R 中,您可以使用:

hist(x, breaks="FD")

對於沒有此選項的其他繪圖庫(例如ggplot2),您可以將 binwidth 計算為:

bw <- 2 * IQR(x) / length(x)^(1/3)

### for example #####
ggplot() + geom_histogram(aes(x), binwidth = bw)

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

comments powered by Disqus