Doane直方图合并的公式


9

我正在实现各种算法,以估计用于直方图的最佳bin数量。我要实现的大多数方法在Wikipedia“直方图”页面上的“ 箱数和宽度 ” *部分中进行了描述。

我对Doane的公式感到困惑:

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

n数据大小在哪里。

问题是峰度为负,并且n >> 1因为的参数log变为负。

*(该页面自发布以来已更改,链接已编辑为指向发布时的页面)


1
您知道该公式使用峰度还是峰度(即Normal dist是否为4或0)?
Peter Flom

@PeterFlom:在原始论文(amstat.tandfonline.com/doi/pdf/10.1080/00031305.1976.10479172)中,峰度定义为偏度,但我不是专家。原纸张也从维基百科式相当不同
鲁杰罗Turra

1
Errr,什么?峰度定义为偏度?那没有道理;他们是非常不同的。我无法访问该论文,但听起来有些地方有些混乱。
Peter Flom

@PeterFlom正态分布应该有3个未4.峰度
Glen_b -Reinstate莫妮卡

@PeterFlom我一直在研究偏度与峰度问题-参见答案中的“编辑2”。
Glen_b-恢复莫妮卡2013年

Answers:


11

当我调查维基百科页面时,此答案已发生重大变化。我基本上没有回答,而是添加了答案,因此目前形成了理解的进步;最后部分是最好的信息所在。

简短的答案:维基百科页面-和OP的公式,似乎是相同的-完全是错误的,至少出于三个不同的原因。我将保留最初的讨论(假定OP和Wikipedia正确),因为这可以解释一些问题。稍后将进行更好的讨论。简短建议:忘记多恩。如果必须使用它,请使用维基百科现在所说的(我已修复)。


我认为公式必须涉及过多峰度;我这样做的原因是,它修改了普通数据的公式以解决非普通数据的问题,因此您希望它能够在普通情况下重现未修改的公式。如果您使用过量峰度,则可以做到这一点。

但是,这确实提出了一个问题,即日志中的项对于大样本会变为负数(实际上,在非常小的处可能为)。我建议不要将其与负过量峰度一起使用(无论如何我绝不会将其用于单峰;一旦事情变得多峰,您希望将过量峰度思想应用于每种模式,而不是对它们进行平滑处理!),尽管有轻度情况(峰度仅小于0)和适中的样本量将不是一个大问题。0n

我还建议在任何情况下,即使按预期方式工作,在大样本量情况下也将提供过多的垃圾箱。

您可能会找到本文(由常规CVer Rob Hyndman撰写):

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

有些兴趣。如果斯特吉斯的论点是错误的,那么多恩的公式也有同样的问题……就像罗布在论文中清楚指出的那样。

在那篇论文中(以及在这个答案中),他对Freedman-Diaconis规则表示赞同。在论文中,他还指出了Matt Wand提到的方法(他指的是似乎并不在线的工作论文,但是如果您可以访问,则可以使用后续论文):

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

[编辑:引文页面上实际上是工作文件的链接]

该方法涉及近似估计特定功能,以便获得近似最佳(根据平均积分平方误差,MISE)箱宽度,以估计底层密度。虽然这些文件效果很好,并且通常提供比Sturges或Doane更多的垃圾箱,但有时我还是更喜欢使用更多的垃圾箱,尽管通常这是一个很好的尝试。

坦白说,我不知道为什么魔杖的方法(或者至少是弗雷德曼·迪亚科尼斯的法则)并不是到处都是默认的。

R至少提供了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正确表示困惑的偏度与峰度问题。

我只是看了与Doane相关的wiso论文(我之前读过它,但是那是在30年前了),它根本没有提到峰度,而只是歪斜。

Doane的实际公式为:Ke=log2(1+g1σg1)

其中是添加的仓位数量,是第三矩偏斜度。[实际上,Doane在相当普遍的时间用法之后,使用作为带符号(!)的第3瞬间偏斜(这种特别统一的符号滥用的根源已经很老了,我不打算继续讨论。它,只是说幸运的是现在它出现的频率大大降低了。]Keg1b1

现在正常时, (尽管直到n远远超过100为止,近似值才很差; Doane使用第一种形式)σg1=6(n2)(n+1)(n+3)6n

但是,似乎一路上有人尝试使其适应峰度(例如,在我撰写此Wikipedia时就其峰度而言,但我不认为他们是由峰度构成的)-但是有明显的原因认为该公式完全是错误的(请注意,使用的标准误差是我上面给出的偏度的se的最终近似值)。我想我在Wikipedia以外的其他地方也看到过峰度的使用,但是除了不在Doane的论文中,Scott的论文,我所指向的Hyndman论文,Wand的论文中也没有出现过峰度。但是,它似乎确实来自某个地方(即,我确定它不是维基百科的原始内容),因为Doane并不近似于σg1。好像已经播放了好几次才结束。如果有人追踪,我将很感兴趣。

在我看来,Doane的论点应该愉快地扩展到峰度,但是必须使用正确的标准误差

但是,由于Doane依赖于Sturges,并且Sturges的论点似乎存在缺陷,因此整个企业可能注定了失败。无论如何,我都在Wikipedia上编辑了“直方图”讨论页面,并注意到了该错误。

---

编辑3:我已更正了Wikipedia页面(但是我采取了偏度绝对值的自由方式,否则Doane的原始公式不能用于原始的偏斜分布-显然是表示桶数的符号偏度无关紧要)。严格来说,我应该以原始的(错误的)形式介绍该公式,然后解释为什么它没有意义,但出于某些原因,我认为这是有问题的-尤其是人们会被诱惑去只复制该公式而忽略一个公式。说明。我相信它实际上涵盖了Doane的初衷。无论如何,它比原始的废话有了很大的改进。(请,谁可以访问原来的纸,看一看它如何b1 定义并检查我在Wikipedia上的更改,以确保它是合理的-至少有三件事出错-峰度,标准错误和错误的日志基础,以及Doane自己的小错误。)


非常感谢你。顺便说一句,我很惊讶地看到“美国统计学家”这样的错误。我从未见过符号。b1
Ruggero Turra

如此规模的小错误(没有绝对值)在期刊中并不经常发生-我看到的那些统计数据远不止于此(更令人震惊)。至于表示法,实际上是相当普遍的。[点拨EG2EG3 ......我可以点到几十个
Glen_b -Reinstate莫妮卡

2

根据第二和第四矩定义的峰度量度从不为负(请参见),然后是log(1+...)>0

该数量kurtosis()在R库的命令中实现moments。另外,使用命令hist()可以指定中断次数,如下所示

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)

该命令中使用的公式kurtosis()很简单mean((data - mean(data))^4)/mean((data - mean(data))^2)^2

现在,如果您想研究什么是``最佳''公式,那么您将需要一个标准。考虑到统计文献中对此进行了详尽的讨论。


我不知道Doane公式中峰度的定义是什么
Ruggero Turra

在您发布的Wikipedia条目中有一个指向峰度定义的链接。顺便说一句,它与我发布的相同。估计为第四样本中心矩除以第二样本中心矩的平方。请查看我对代码的修改。
Miles Davis

1
再说一次,我不知道您的公式是否正确,例如,如果您看一下该文件,他使用log2而不是log
Ruggero Turra 2013年

嗯,这是“多恩的公式”你贴¬¬。无论如何,可以通过使用log(n,2)代替来对此进行简单地纠正log(n)。但是,维基百科条目以及其他来源表明应为log
Miles Davis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.