Estoy interesado en encontrar un método lo más óptimo posible para determinar cuántos bins debo usar en un histograma. Mis datos deben oscilar entre 30 y 350 objetos como máximo, y en particular, estoy tratando de aplicar umbrales (como el método de Otsu) donde los objetos «buenos», que debería tener menos y más dispersos, están separados de los objetos «malos», que deberían tener un valor más denso. Un valor concreto tendría una puntuación de 1 a 10 para cada objeto. Había tenido de 5 a 10 objetos con puntuaciones de 6 a 10 y de 20 a 25 objetos con puntuaciones 1-4. Me gustaría encontrar un patrón de agrupación de histogramas que generalmente permita que algo como el método de Otsu supere los objetos de puntuación baja. Sin embargo, en la implementación de Otsu que he visto, el tamaño del contenedor era 256 y, a menudo, tengo muchos menos puntos de datos que 256, lo que para mí sugiere que 256 no es un buen número de contenedor. Con tan pocos datos, ¿qué enfoques debo tomar para calcular la cantidad de contenedores que se deben usar?
Comentarios
- Creo que Sturges ‘ La regla se puede usar para n < 200; donde n es el número de observaciones
Respuesta
El Freedman-Diaconis es muy sólida y funciona bien en la práctica. El ancho del contenedor se establece en $ h = 2 \ times \ text {IQR} \ times n ^ {- 1/3} $ . Entonces, el número de contenedores es $ (\ max- \ min) / h $ , donde $ n $ es el número de observaciones, max es el valor máximo y min es el valor mínimo.
En base R, puede usar:
hist(x, breaks="FD")
Para otras bibliotecas de trazado sin esta opción (p. ej., ggplot2
), puede calcular binwidth como:
bw <- 2 * IQR(x) / length(x)^(1/3) ### for example ##### ggplot() + geom_histogram(aes(x), binwidth = bw)
Comentarios
- @nico. El valor predeterminado en R es breaks = » Sturges » que no siempre da buenos resultados.
- ¿Cómo calcular
IQR
? - @KurtMueller IQR significa rango intercuartílico. Busque el primer cuartil y el tercer cuartil y la diferencia es IQR. IQR ya viene con R para que pueda usarlo.
- Si no me equivoco, la respuesta debe ser
num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
-
nclass.FD
no existía hace nueve años.
Responder
Si usa muy pocos bins, el histograma no muestra los datos muy bien. Si tiene demasiados bins, se ve un peine roto, lo que tampoco da una idea de la distribución.
Uno La solución es crear un gráfico que muestre cada valor. Ya sea un diagrama de puntos o una distribución de frecuencia acumulativa, que no requiere ningún intervalo.
Si desea crear una distribución de frecuencia con intervalos igualmente espaciados, debe decidir cuántos intervalos (o el ancho de cada uno). La decisión depende claramente de la cantidad de valores. Si tiene muchos valores, su gráfico se verá mejor y será más informativo si tiene muchos contenedores. Este La página de wikipedia enumera varios métodos para decidir el ancho del contenedor a partir del número de observaciones. El método más simple es establecer el número de contenedores igual a la raíz cuadrada del número de valores que está clasificando.
Esta página de Hideaki Shimazaki explica un método alternativo. Es un poco más complicado de calcular, pero parece hacer un gran trabajo. La parte superior de la página es una aplicación Java. Desplácese más allá para ver la teoría y la explicación, luego siga desplazándose para encontrar enlaces a los artículos que explican el método.
Comentarios
- El enlace a la página de Hideaki ‘ está roto. ‘ no estoy seguro de si esto es lo mismo: toyoizumilab.brain.riken.jp/hideaki/res/histogram.html
Responder
Tal vez el documento « Las variaciones en el histograma «de Denby y Mallows serán de interés:
Esta nueva pantalla que denominamos» dhist «(por diagonal -cut histogram) conserva las características deseables tanto de la hist de igual ancho como de la hist de igual área. Mostrará bins altos y estrechos como el ea hist cuando haya picos en los datos y mostrará valores atípicos aislados como el histograma habitual.
También mencionan ese código en R está disponible a pedido.
Respuesta
¿Viste el Método Shimazaki-Shinomoto ?
Aunque parece ser computacionalmente costoso, puede darte buenos resultados. Vale la pena intentarlo si el tiempo de cálculo no es su problema.Hay algunas implementaciones de este método en java, MATLAB, etc., en el siguiente enlace, que se ejecuta lo suficientemente rápido: interfaz web
Comentarios
- Aquí hay una implementación: gist.github.com/salotz/0158a99a75078b47538452111ec0faa2 . Y sí, es más caro ya que elige un rango para la cantidad de contenedores y debe hacer un histograma para cada uno y luego calcular un costo, luego elegir el que tenga el costo más mínimo.
Answer
No estoy seguro de que esto cuente como una práctica estrictamente buena, pero tiendo a producir más de un histograma con diferentes anchos de intervalo y elegir el histograma que histograma uso basado en qué histograma se ajusta a la interpretación que estoy tratando de comunicar mejor. Si bien esto introduce algo de subjetividad en la elección del histograma, lo justifico sobre la base de que he tenido mucho más tiempo para comprender los datos que la persona a la que le estoy dando el histograma, así que necesito darles un mensaje muy conciso.
También soy un gran fanático de presentar histogramas con el mismo número de puntos en cada bandeja en lugar de con el mismo ancho de bandeja. Por lo general, encuentro que estos representan los datos mucho mejor que el ancho constante del contenedor, aunque son más difíciles de producir.
Comentarios
- lo siento, debería haber mencionado que necesito hacer esto de forma automática. la opción de » hacerlo varias veces hasta que encuentre la que mejor se adapte a mi propósito » ganó ‘ no funciona para mí. tiene que hacerse computacionalmente …
- Estoy de acuerdo – la idea de que hay un » óptimo » bin el ancho es una suposición que simplifica enormemente.
Respuesta
Si necesito determinar el número de bins mediante programación, normalmente comience con un histograma que tenga muchos más contenedores de los necesarios. Una vez que se llena el histograma, combino contenedores hasta tener suficientes entradas por contenedor para el método que estoy usando, p. si quiero modelar las incertidumbres de Poisson en un experimento de conteo con incertidumbres de una distribución normal hasta que tenga más de 10 entradas.
Respuesta
Por favor, vea esta respuesta como un complemento de Sr. Respuesta de Rob Hyndman .
Para crear gráficos de histograma con exactamente los mismos intervalos o «binwidths» usando la regla Freedman – Diaconis ya sea con el paquete R básico o ggplot2
, podemos usar uno de los valores de la función hist()
, a saber, breaks
. Supongamos que queremos crear un histograma de qsec
de mtcars
datos usando la regla Freedman-Diaconis. En R básica usamos
x <- mtcars$qsec hist(x, breaks = "FD")
Mientras tanto, en ggplot2
paquete que usamos
h <- hist(x, breaks = "FD", plot = FALSE) qplot(x, geom = "histogram", breaks = h$breaks, fill = I("red"), col = I("white"))
O, alternativamente
ggplot(mtcars, aes(x)) + geom_histogram(breaks = h$breaks, col = "white")
Todos ellos generan trazados de histograma con exactamente los mismos intervalos y el mismo número de bins según lo previsto.
Respuesta
I tengo 600 observaciones para Au g / t. El tamaño del contenedor 1 me da esto:
La selección automática (omitir el rango de intervalo) da esto:
Los datos se ven O «K en el primer y segundo gráfico, como si no hay ningún problema con la integridad de los datos. Solo el tamaño del contenedor 0.1 (g / t) responde a la pregunta: las medidas eran inexactas e imprecisas
Mi juicio: 1. Hay no hay técnica de medición en la Tierra para mostrar el verdadero valor de los fenómenos naturales. Todas las medidas son aproximadas, algunas cercanas al valor real. Depende del diseño del muestreo, la calibración, las calificaciones humanas, etc. 2. Por eso la distribución es más sesgada que simétrica. 3. Sin embargo, la forma de la distribución debe parecerse a una sección «en forma de campana», al menos aproximadamente. Una campana a la vez (a menos que haya varios entornos geológicos). 4. La distribución de frecuencia con la manipulación del tamaño del contenedor puede ayudar a revelar el patrón de cuán exactas y precisas se han realizado las mediciones. De modo que uno necesita una selección experimental del tamaño del contenedor en lugar de una regla grabada en piedra.
Comentarios
- Esto es más un comentario que un Responda a menos que explique la moraleja. Yo ‘ diría que la moraleja es la siguiente: todas las reglas son reglas generales, algunas tienen una base más estadística que otras, pero es posible que la mayoría de las reglas no hagan lo que desea si las distribuciones tienen un sesgo muy alto o curtosis. Por lo tanto, use su criterio también.
- Ha agregado comentarios, pero no tengo claro que alguno contribuya con nuevos detalles útiles al hilo. 1.está bien para mí, pero no es el problema aquí. 2. No ‘ t se sigue de 1. ya que algunas distribuciones son casi simétricas. 3. es dudoso: hay muchas situaciones en las que se esperan formas distintas de las campanas. 4. también es dudoso ya que la calidad de las medidas originales a menudo no es evidente en ningún histograma, pero a menudo se examina mejor con atención a la estructura muy fina de una distribución.
- 2.Casi simétrico no es simétrico. No puedes estar casi embarazada: embarazada o no.
- Claro, pero la simetría exacta en los datos es tan poco común que si hubiera dicho » simétrico » alguien también podría objetar razonablemente eso. Es ‘ muy fácilmente ser casi simétrico; por eso y cómo tenemos medidas de asimetría.
- Notado, pero su comentario fue general y carecía del contexto que da ahora. A mi vez dije » dudoso » no » incorrecto «. Mi principal comentario es que su respuesta no ‘ realmente agrega mucho al hilo sobre cómo elegir el tamaño del contenedor o el número equivalente de contenedores. Tener otro ejemplo en el que ‘ s difícil es un giro en la pregunta, no realmente una respuesta.