Fórmula de Doane para binograma de histograma

9

Estou implementando vários algoritmos para estimar o melhor número de caixas a serem usadas para histogramas. A maioria dos que estou implementando está descrita na página "Histograma" da Wikipedia, na seção " Número de posições e largura " *.

Estou preso a um problema com a fórmula de Doane:

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

onde nestá o tamanho dos dados.

O problema é quando a curtose é negativa e n >> 1porque o argumento da logtorna - se negativo.

* (essa página mudou desde que foi postada, link editado para apontar para a página como estava no momento da postagem)

Ruggero Turra
fonte
11
Você sabe se essa fórmula usa curtose ou curtose excessiva (ou seja, Normal dist tem 4 ou 0)?
Peter Flom - Restabelece Monica
@ PeterFlom: no artigo original ( amstat.tandfonline.com/doi/pdf/10.1080/00031305.1976.10479172 ), a curtose é definida como Skewness, mas eu não sou especialista. O artigo original também é bem diferente da fórmula da wikipedia
Ruggero Turra 04/04
11
Errr, o que? A curtose é definida como a assimetria? Isso não faz sentido; eles são muito diferentes. Não consigo acessar o jornal, mas parece que algo está errado em algum lugar.
Peter Flom - Restabelece Monica
@PeterFlom A distribuição normal deve ter curtose de 3 e não 4.
Glen_b -Reinstate Monica
@ PeterFlom Estive investigando o problema de distorção versus curtose - consulte "Editar 2" na minha resposta.
Glen_b -Reinstala Monica

Respostas:

11

Esta resposta sofreu alterações significativas à medida que investigo a página da Wikipedia. Eu deixei as respostas em grande parte como elas foram, mas adicionadas a elas, portanto, atualmente, isso forma uma progressão de entendimento; as últimas partes são onde está a melhor informação.

Resposta curta: a página da wikipedia - e a fórmula do OP, que parece ter sido a mesma - estão simplesmente erradas, por pelo menos três razões diferentes. Deixarei minha discussão original (que supunha que o OP e a wikipedia estavam certos), pois isso explica alguns problemas. Uma discussão melhor segue depois. O pequeno conselho: simplesmente esqueça Doane. Se você precisar usá-lo, use o que a wikipedia diz agora (eu o corrigi).


Eu acredito que a fórmula deve se referir ao excesso de curtose; minha razão para isso é que ela modifica uma fórmula para dados normais para dar conta de dados não normais, portanto, você espera que reproduza o não modificado no normal. Faz isso se você usar excesso de curtose.

0 0n

Eu também sugeriria que, em qualquer caso, ele forneceria muito poucos compartimentos em tamanhos de amostra grandes, mesmo quando funcionasse como pretendido.

Você pode encontrar este documento (por CVer Rob Hyndman ):

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

de algum interesse. Se o argumento de Sturges estiver errado, a fórmula de Doane tem o mesmo problema ... como Rob observa claramente no jornal.

Nesse artigo (e nesta resposta ), ele concorda com a regra de Freedman-Diaconis. No artigo, ele também aponta para a abordagem mencionada por Matt Wand (ele se refere ao documento de trabalho que não parece estar online, mas o artigo subsequente está disponível se você tiver acesso):

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

[Editar: na verdade, um link para o documento de trabalho está na página do cidadão ]

Essa abordagem envolve a estimativa aproximada de funcionais específicos para obter larguras aproximadamente ótimas (em termos de erro quadrado integrado médio, MISE) para estimar a densidade subjacente. Embora eles funcionem bem e ofereçam muito mais caixas do que Sturges ou Doane em geral, às vezes eu ainda prefiro usar mais caixas, embora seja geralmente uma primeira tentativa muito boa.

Francamente, não sei por que a abordagem de Wand (ou pelo menos a regra de Fredman Diaconis) não é um padrão em todo lugar.

R oferece pelo menos o cálculo de Freedman-Diaconis do número de posições:

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

Vejo ?nclass.FD

Pessoalmente, para mim, são poucas caixas nos dois primeiros casos, pelo menos; Eu dobraria os dois, apesar de ser um pouco mais barulhento que o ideal. Como n se torna grande, acho que se sai muito bem na maioria dos casos.


Edição 2:

Decidi investigar o problema de distorção versus curtose em que @ PeterFlom expressou com razão perplexidade.

Acabei de dar uma olhada no artigo do Doane que eu estava vinculado (eu o li antes ... mas isso foi há quase 30 anos) - ele não faz nenhuma referência à curtose, apenas à distorção.

Ke=euog2(1 1+g1 1σg1 1)

Keg1 1b1 1

σg1 1=6(n-2)(n+1 1)(n+3)6n

σg1 1. Parece que foi tocado várias vezes antes de terminar lá; Eu estaria interessado se alguém o localizasse.

Parece-me que o argumento de Doane deveria estender - se felizmente à curtose, mas o erro padrão correto teria que ser usado.

No entanto, como Doane se apóia no argumento de Sturges e Sturges parece falho, talvez toda a empresa esteja condenada. De qualquer forma, editei a página de discussão do histograma na wikipedia, observando o erro.

---

b1 1

Glen_b -Reinstate Monica
fonte
b1 1
Pequenos erros dessa escala (a ausência do valor absoluto) não acontecem com tanta frequência em periódicos - fora das estatísticas, vi erros muito mais óbvios (e mais flagrantes). Quanto à notação, é realmente bastante comum; eg1 , eg2 , eg3 ... Eu poderia apontar para dezenas
Glen_b -Reinstar Monica
2

A medida da curtose definida em termos do segundo e quarto momentos nunca é negativa ( veja ), então o log(1+...)>0.

Esta quantidade é implementado no comando kurtosis()da biblioteca R moments. Além disso, usando o comando, hist()você pode especificar o número de quebras da seguinte forma

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)

A fórmula usada no comando kurtosis()é simplesmente mean((data - mean(data))^4)/mean((data - mean(data))^2)^2.

Agora, se você quiser investigar qual é a melhor `` fórmula '', precisará de um critério. Considere que isso foi discutido amplamente na literatura estatística.

Milhas Davis
fonte
o que eu não sei é o que é a definição de curtose na fórmula de Doane
Ruggero Turra
Há um link para a definição de curtose na entrada da Wikipedia que você postou. Aliás, é o mesmo que eu postei. É estimado como o quarto momento central da amostra dividido pelo quadrado do momento central da segunda amostra. Por favor, veja minha edição para o código.
Miles Davis
11
novamente, eu não sei se o seu é a fórmula correta de Doane, se você olhar para o papel, por exemplo, ele usa log2 em vez de log
Ruggero Turra
Bem, essa é a "fórmula de Doane" que você postou ¬¬ . De qualquer forma, isso pode ser corrigido trivialmente usando em log(n,2)vez de log(n). MAS, a entrada da Wikipedia e outras fontes indicam que deveria ser log.
Miles Davis