Sunday, March 28, 2010

Una nueva forma de realizar histogramas

Denby y Mallows (2010) afirman que al construir un histograma, es muy común que todas las barras tengan el mismo ancho. Otra opción, no tan usada en la vida práctica (puesto que los softwares comerciales no lo tienen implementado), es que las barras de los histogramas tengan la misma área, implicando directamente que no necesariamente tengan el mismo ancho. La primera opción (el mismo ancho para todas las barras) suaviza las regiones de alta densidad y su comportamiento es pobre cuando la distribución tiene picos pronunciados. Por otro lado, la segunda opción (misma área en todas las barras) suaviza en regiones de baja densidad y su comportamiento es pobre a la hora de identificar datos extremos.


En un excelente trabajo computacional, Denby y Mallows (2010) han desarrollado una excelente idea para la construcción de histogramas que evade los defectos de los anteriores enfoques. Su trabajo (además de generalizar los anteriores enfoques) se basa en la realización de varios cortes diagonales en la función de distribución y puede ser fácilmente implementado por los usuarios familiarizados con el lenguaje de S-Plus o de R. A propósito de este nuevo método, ellos dan los siguientes tres ejemplos en donde se comprueba el buen funcionamiento del histograma con cortes diagonales.


Primer ejemplo: Función de distribución (ecdf) para intervalos de tiempo. El histograma (histogram) estándar no muestra los dos pequeños picos, el histograma de igual área (e-a) esconde los datos atípicos a la izquierda de la función de distribución. El enfoque propuesto (dhist) muestra ambos efectos.



Segundo ejemplo: Función de distribución para una razón. El histograma estándar no muestra la punta en el dato x=20.2. Los otros dos histogramas sí lo muestran.



Tercer ejemplo: Función de distribución de unos datos simulados. El histograma propuesto sí muestra la punta cercana a x=7 y también los valores extremos a la derecha de la distribución.



La implementación computacional se realiza mediante la función dhist (descargar acá). Básicamente, sus argumentos son: x, el conjunto de datos; a, el factor de escala (para un histograma estándar, esta argumento debe ser igual a 0.0001*iqr(x), para el histograma de iguales áreas debe ser igual a 1000*iqr(Taxes) y para la nueva propuesta es 10*iqr(Taxes)); nbin, el número de barras en el histograma. A continuación se muestra el código en R y las salidas para histogramas de las variables Ingreso e Impuestos de la población Lucy del paquete TeachingSampling.




library(TeachingSampling)
data(Lucy)
attach(Lucy)




# Función de distribución empírica para las dos variables
plot(ecdf(Income))
plot(ecdf(Taxes))




# Histograma tradicional
dhist(Income,nbin=14,a=0.0001*iqr(Income))
dhist(Taxes,nbin=14,a=0.0001*iqr(Taxes))




# Histograma de igual área
dhist(Income,nbin=14,a=1000*iqr(Income))
dhist(Taxes,nbin=14,a=1000*iqr(Taxes))




# Histograma propuesto
dhist(Income,nbin=14,a=10*iqr(Income))
dhist(Taxes,nbin=14,a=10*iqr(Taxes))


Histogramas para la variable Ingreso:



Histogramas para la variable Impuesto:


2 comments:

  1. Aunque es otro enfonque, la utilidad no es mucha.

    ReplyDelete
  2. Es otro enfoque y la utilidad sí es mucha... Cuando empieces a modelar tus propios datos te darás cuanta que un histograma, además de ser una poderosa herramienta descriptiva, es la primera etapa para proponer una distribución. Por ejemplo, con los enfoques anteriores puedes proponer una distribución Gamma a unos datos a los cuales, en realidad, les ajusta mejor una mezla de distribuciones normales. Otro ejemplo son las distribuciones multimodales, etc.. Entonces con este primer paso puedes estar errando en tus propuestas. Así que mi consejo gira en torno a que es importante mejorar esa primera etapa...

    Saludos!!!

    ReplyDelete