Estoy implementando varios algoritmos para estimar el mejor número de contenedores para usar en histogramas. La mayoría de los que estoy implementando se describen en la página "Histograma" de Wikipedia en la sección " Número de contenedores y ancho " *.
Estoy atrapado en un problema con la fórmula de Doane:
1 + log(n) + log(1 + kurtosis(data) * sqrt(n / 6.))
¿Dónde n
está el tamaño de los datos?
El problema es cuando la curtosis es negativa y n >> 1
porque el argumento de la se log
vuelve negativo.
* (esa página ha cambiado desde que esto fue publicado, el enlace editado para apuntar a la página como estaba en el momento de la publicación)
Respuestas:
Esta respuesta ha sufrido cambios significativos mientras investigo la página de wikipedia. Dejé las respuestas en gran medida tal como estaban, pero las agregué, por lo que en la actualidad esto forma una progresión de comprensión; Las últimas partes son donde está la mejor información.
Respuesta corta: la página de wikipedia, y la fórmula del OP, que parece haber sido la misma, simplemente están equivocadas, al menos por tres razones diferentes. Dejaré mi discusión original (que suponía que el OP y wikipedia tenían razón) ya que eso explica algunos problemas. Una mejor discusión sigue más adelante. El consejo corto: simplemente olvida a Doane. Si debe usarlo, use lo que dice Wikipedia ahora (lo arreglé).
Creo que la fórmula debe referirse al exceso de curtosis; mi razón para eso es que modifica una fórmula para datos normales para tener en cuenta datos no normales, por lo que esperaría que reproduzca el no modificado en la normalidad. Lo hace si usa un exceso de curtosis.
Sin embargo, eso plantea el problema de que el término en el registro puede ser negativo con muestras grandes (de hecho, es posible ser en bastante pequeño ). Sugeriría no usarlo con exceso de curtosis negativa (de todos modos, nunca lo usaría más allá de la unimodalidad; una vez que las cosas se vuelven multimodales, desea aplicar la idea de exceso de curtosis a cada modo, ¡no suavizarlas!), Aunque con casos leves ( un exceso de curtosis apenas inferior a 0) y tamaños de muestra modestos no será un gran problema.n≤0 n
También sugeriría que, en cualquier caso, dará muy pocos contenedores en tamaños de muestra grandes, incluso cuando funciona según lo previsto.
Puede encontrar este documento (por el CVer habitual Rob Hyndman ):
http://www.robjhyndman.com/papers/sturges.pdf
De cierto interés. Si el argumento de Sturges está equivocado, la fórmula de Doane tiene el mismo problema ... como Rob señala claramente en el documento.
En ese documento (y en esta respuesta ) asiente con la cabeza a la regla Freedman-Diaconis. En el documento, también señala el enfoque mencionado por Matt Wand (se refiere al documento de trabajo que no parece estar en línea, pero el documento posterior está disponible si tiene acceso):
http://www.jstor.org/discover/10.2307/2684697
[Editar: en realidad hay un enlace al documento de trabajo en la página de citas ]
Ese enfoque consiste en estimar aproximadamente funciones particulares para obtener aproximadamente el ancho óptimo (en términos de error cuadrático medio integrado, MISE) para estimar la densidad subyacente. Si bien estos funcionan bien y dan muchos más contenedores que Sturges o Doane en general, a veces todavía prefiero usar más contenedores, aunque generalmente es un muy buen primer intento.
Francamente, no sé por qué el enfoque de Wand (o al menos la regla de Fredman Diaconis) no es un defecto en casi todas partes.
R al menos ofrece el cálculo Freedman-Diaconis del número de contenedores:
Ver
?nclass.FD
Personalmente, para mí eso es muy pocos contenedores en los primeros dos casos al menos; Duplicaría ambos a pesar del hecho de que podría ser un poco más ruidoso que óptimo. A medida que n se hace grande, creo que lo hace muy bien en la mayoría de los casos.
Edición 2:
Decidí investigar el problema de asimetría frente a curtosis en el que @PeterFlom expresó correctamente su perplejidad.
Acabo de echar un vistazo al papel de Doane vinculado (lo había leído antes ... pero eso fue hace casi 30 años), no hace referencia a la curtosis en absoluto, solo a la asimetría.
La fórmula real de Doane es:Ke=log2(1+g1σg1)
donde es el número de bins agregados, es el sesgo del 3er momento. [Bueno, en realidad, Doane, después de un uso bastante común del tiempo, usa para la asimetría firmada (!) Del 3er momento (el origen de este abuso de notación particularmente poco edificante es bastante antiguo y no voy a buscarlo , excepto para decir que afortunadamente aparece ahora con mucha menos frecuencia).]g 1 √Ke g1 b1−−√
Ahora en la normalidad, (aunque esa aproximación es bastante pobre hasta que n es más de 100; Doane usa la primera forma)σg1=6(n−2)(n+1)(n+3)−−−−−−−−√≈6n−−√
Sin embargo, parece que en el camino alguien ha intentado adaptarlo a la curtosis (en el momento en que escribo esta Wikipedia lo tiene en términos de curtosis , por ejemplo, y no creo que lo hayan inventado), pero hay una razón clara creer que la fórmula es simplemente incorrecta (tenga en cuenta que el error estándar utilizado es esa aproximación final para el sesgo de sesgo que di anteriormente). Creo que he visto este uso de la curtosis en varios lugares además de Wikipedia, pero además de no estar en el papel de Doane, no está presente en el papel de Scott, ni en el papel de Hyndman al que apunto, ni en el papel de Wand. Sin embargo, parece haber venido de alguna parte (es decir, estoy seguro de que no es original de Wikipedia), porque Doane no tiene la aproximación aσg1 . Parece que se ha jugado varias veces antes de que terminara allí; Me interesaría si alguien lo rastreara.
Me parece que el argumento de Doane debería extenderse felizmente a la curtosis, pero tendría que usarse el error estándar correcto .
Sin embargo, dado que Doane confía en Sturges y el argumento de Sturges parece ser defectuoso, tal vez toda la empresa esté condenada. En cualquier caso, he editado la página de discusión del histograma en wikipedia señalando el error.
---
Edición 3: he corregido la página de wikipedia (pero me tomé la libertad de tomar el valor absoluto de la asimetría; de lo contrario, la fórmula original de Doane no se puede usar para distribuciones sesgadas a la izquierda tal como estaba, claramente por el número de contenedores, el signo de la asimetría es irrelevante). Estrictamente hablando, debería haber presentado la fórmula en su forma original (incorrecta), y luego explicar por qué no tiene sentido, pero creo que es problemático por varias razones, entre otras cosas, que la gente se sentirá tentada a copiar la fórmula e ignorar un explicación. Creo que en realidad cubre la intención original de Doane. En cualquier caso, es una gran mejora sobre las tonterías que había en el original. (Por favor, cualquiera que pueda acceder al documento original, échale un vistazo y cómob1−−√ está definido y verifique mis cambios en wikipedia para asegurarme de que sea razonable: había al menos tres cosas incorrectas: la curtosis, el error estándar y la base incorrecta de registros, más el pequeño error de Doane).
fuente
La medida de curtosis definida en términos del segundo y cuarto momento nunca es negativa ( ver ), entonces el
log(1+...)>0
.Esta cantidad se implementa en el comando
kurtosis()
de la biblioteca Rmoments
. Además, con el comandohist()
puede especificar el número de descansos de la siguiente maneraLa fórmula utilizada en el comando
kurtosis()
es simplementemean((data - mean(data))^4)/mean((data - mean(data))^2)^2
.Ahora, si desea investigar cuál es la `` mejor '' fórmula, necesitará un criterio. Considere que esto se ha discutido ampliamente en la literatura estadística.
fuente
log(n,2)
lugar delog(n)
. PERO, la entrada de wikipedia, así como otras fuentes indican que debería serlog
.