El presente trabajo realiza una comparación estadística entre los métodos de Sturges(1926), Freedman-Diaconis(1981) y Scott(1985) utilizados para definir el número de intervalos en tablas de disribución de frecuencias agrupadas. En principio, se generarán histogramas con datos simulados de una distribución normal variando el tamaño de la muestra (20,30,50,100) y añadiendo la presencia de datos atípicos para visualizar la que mejor se ajuste las condiciones estudiadas.Y por último, se probarán las rutinas y se escogerá aquella que mejor represente la variable thickness de la base de datos Melanoma ubicada en la libreria MASS del paquete R.
El software estadístico R presenta dentro de su estructura e interfaz un lenguaje dinámico que permite el diseño de funciones útiles para la comprensión y toma de decisiones de situaciones estadísticas (y no estadísticas). En este ejercicio se diseñó una función en la versión R.3.4.4 que construye una tabla de frecuencia de datos agrupados con un argumento en el que el usuario puede escoger el método deseado para su elaboración. Por defecto se utilizará el método de “Sturges” para la obtención del número de intervalos, se visualizarán los elementos básicos de una tabla como marcas de clase, frecuencia absoluta, frecuencia acumulada, frecuencia relativa y frecuencia relativa acumulada y se generararán sus respectivas gráficas (histogramas, ojivas y polígono de frecuencia).
Lo fundamental de esta función es comparar los diferentes métodos estadísticos que se utilizan para determinar el número de clases en una tabla de frecuencia de datos agrupados (Scott y Freedman-Diaconis), esto se determinará a partir de diferentes muestras (para n=20, 30, 50 y 100) cuyos elementos son generados a partir de un vector aleatorio de distribución normal con media 20 y desviación estándar 5.
Durante la realización de una investigación estadística es normal que en el momento de recolectar los datos sea necesario realizar una tabla de frecuencia para datos agrupados en intervalos, debido a que proporciona interpretaciones más confiables y precisas. Sin embargo, el problema radica en que no hay unanimidad en la elección del número de clases (o intervalos) sino que existen varias formas o métodos (unos más técnicos que otros) que proponen un número determinado de clases, y debe ser el investigador quien identifique el más significativo para su estudio, lo cual influenciará significativamente la interpretación de sus resultados.
No existe un método universal que determine de forma precisa el número de intervalos adecuados para un estudio, provocando que cada técnica proporcione diferentes amplitudes en cada clase y, por lo tanto, diferentes resultados. En esta materia se destacan los trabajos iniciales de Grant y Halley (y otros autores desconocidos en el ambiente estadístico) por buscar un método de tabulación en el momento de recolectar datos. Pero fueron Sturges (1926), Dixon y Kronmal (1965), Velleman (1976), Scott (1979) y Freedman & Diaconis (1981) los que han propuesto reglas de número de clases utilizando ciertos argumentos matemáticos para dar una claridad sobre el número de intervalos que deben utilizarse en determinada investigación.
Existen otras reglas muy utilizadas en el ambiente académico como es el caso de la empírica (raíz cuadrada del número de datos) que es útil para generar rápidamente un número determinado de intervalos, aunque hoy en día la regla de Sturges es la más utilizada y avalada por la comunidad estadística. Esto en parte se debe a que dentro de su estructura considera un histograma de frecuencias ideal con k intervalos, donde el i-ésimo intervalo contiene un número de muestras dado por el coeficiente binomial, en donde a medida que k aumenta el histograma se aproxima a la forma de una densidad normal o campana de Gauss .
Con el fin de corroborar lo anterior, en el presente trabajo se compararán los resultados (tablas de frecuencias) y sus respectivas gráficas (histogramas, polígono de frecuencia y ojiva) al aplicar las reglas de Sturges, Scott y Freedman-Diaconis para intentar reponder la siguiente pregunta: ¿qué regla genera una gráfica que esté acorde con la distribución de los datos?
En la mayoría de textos estadísticos se propone que la amplitud de los intervalos se calcula mediante la expresión:
\[h=\frac{max(x)-min(x)}{k}\] Donde k representa el número de intervalos.
Haciendo uso de la expresión anterior, si el investigador propone una amplitud determinada los intervalos se pueden calcular por medio de la expresión:
\[h=[\frac{max(x)-min(x)}{k}]\] Los corchetes indican la función ceiling(x) =[x] que representa el más pequeño número entero mayor o igual que x. Aunque claramente este tipo de método es muy subjetivo y varía de investigador a investigador. Por lo tanto, se han definido reglas estadísticas menos subjetivas (utilizando elementos matemáticos) para dar un número de clases precisos para los estudios.
\[k=\sqrt(n)\]
Esta regla es muy utilizada en el ambiente escolar y está presente en muchos textos académicos universitarios por su rápido resultado, además de que es utilizada por los histogramas de la herramienta ofimática Excel.
En la regla de Sturges se considera un histograma de frecuencias con un número k de intervalos, donde el i-esimo intervalo contiene un número de muestras dadas por un coeficiente binomial, en donde a medida que el número k de intervalos aumenta el histograma de frecuencias toma la forma de una distribución normal. Su fórmula es:
\[k=1+[\log_2(N)]\] La desventaja de la regla de sturges es que debe tener un tamaño de la muestra considerable para garantizar confiabilidad en su aplicación (como \(n>30\) ).
La regla de Dixon y Kronmal es un método muy poco usado y conocido, el cual establece el número de intervalos mediante la expresión:
\[k=1+[\log_{10}(n)]\]
Esta regla da una cota superior (si \(n<100\)) para la cantidad de intervalos que es generalmente bastante efectiva en la práctica.
Esta regla es una variante de los métodos vistos anteriormente y plantea una forma más simple de calcular el número de intervalos:
\[ k=[2n^{1/3}]\] + Regla de Scott
La regla de Scott establece que el número de intervalos se calcula mediante la expresión:
\[k=[3.5sn^{-1/3}]\]
Donde \(s\) representa la desviación estándar o típica de los datos. Este autor se basó en la distribución normal.
Este método para definir el número de intervalos está definido por: \[k=[2Rn^{-1/3}]\] Donde \(R\) es el rango intercuartílico de la muestra.
Esta regla tiene como característica que poco sensible a los datos atípicos y que a diferencia de la regla de Scott arroja intervalos un poco más pequeños.
Lo ideal del trabajo de investigación será mostrar la comparación entre las dos últimas reglas y el método de Sturges, con el fin de determinar por qué a pesar de los años sigue siendo esta ultima la preferida por los investigadores.
En la primera rutina se aprecia la construcción de una función que realiza la tabla de frecuencia de datos agrupados en intervalos utilizando tres métodos estadísticos: Sturges(por defecto), Scott y Freedman-Diaconis.
Adicionalmente, se presentarán algunos elementos pertinentes de una tabla de frecuencia tales como su marca de clase, frecuencias absolutas y relativas (sus respectivas acumuladas) y la frecuencia porcentual de cada intervalo.
Por último, se generará automáticamente los respectivos gráficos de la función enfoncando en el histograma, el polígono de frecuencia y la ojiva , obteniendo de esta manera todos los detalles que se deben presentar al momento de la construcción de datos agrupados por intervalos.
tabla=function(x,regla=1)
{
if(regla==1)
{
k=nclass.Sturges(x) #con esto establecemos el número de intervalos según la regla de Sturges
}
if(regla==2)
{
k=nclass.FD(x) #con esto establecemos el número de intervalos según la regla de Freedman-Diaconis
}
if(regla==3)
{
k=nclass.scott(x) #con esto establecemos el número de intervalos según la regla de Scott
}
rango=ceiling(max(x)-min(x))
amplitud=round(rango/k,1)#amplitud del intervalo
rango.corregido=abs(round(amplitud*k-rango,1))
lim.inf=numeric(k) #creamos un vector numérico de cero que se rellenará con los límites inferiores de la clase
lim.inf[1]=min(x)-(rango.corregido/2) #establecemos el primer límite inferior, distribuyendo el rango corregido
#Ahora establecemos los distintos valores de la clase inferior
for(i in 2:k)
{
lim.inf[i]=lim.inf[i-1]+amplitud
}
lim.inf=round(lim.inf,2)
lim.sup=numeric(k) #creamos un vector numérico de cero que se rellenara con los límites superiores de la clase
lim.sup[1]=lim.inf[1]+amplitud
#Ahora establecemos los distintos valores de la clase superior
for(i in 2:k)
{
lim.sup[i]=lim.sup[i-1]+amplitud
}
lim.sup=round(lim.sup,2)
MC=numeric(k) #creamos un vector numérico de cero que se rellenará con la marca de clase
for(i in 1:k)
{
MC[i]=sum(lim.inf[i],lim.sup[i])/2
}
MC=round(MC,2)
frecuencia=numeric(k)#creamos un vector numérico de cero que se rellenará con la frecuencia absoluta
for(i in 1:k)
{
frecuencia[i]=length(x[x>=lim.inf[i] & x<lim.sup[i]])
}
f.acumulada=cumsum(frecuencia)#cálculo de los valores de la frecuencia acumulada
f.relativa=numeric(k)
for(i in 1:k)
{
f.relativa[i]=frecuencia[i]/length(x)
}
f.relativa=round(f.relativa,2)
f.rel.acum=cumsum(f.relativa)
porcentaje=numeric(k) #establecemos una tabla para el porcentaje
for(i in 1:k)
{
porcentaje[i]=f.relativa[i]*100
}
######Tabla de frecuencia####
tabla=data.frame(lim.inf,lim.sup,MC,frecuencia,f.acumulada,f.relativa,f.rel.acum,porcentaje)
print(tabla)
windows()
par(mfrow=c(1,2))
######Desarrollamos las gráficas####
#Histograma
histograma=barplot(tabla$frecuencia,space=0,font=1,col.main="darkorange3",main="Histograma y poligono de frecuencia",xlab="Marca de clase",ylab="Frecuencia",names.arg=MC,col = heat.colors(8))
lines(x=histograma,y=tabla$frecuencia,col="blue")
points(x=histograma,y=tabla$frecuencia,col="darksalmon")
#ojiva
plot(tabla$MC,tabla$f.rel.acum,col="blue",xlab="datos de la variable",ylab="Frecuencias Relativas acumulada")
lines(tabla$MC,tabla$f.rel.acum,col="green")
title(main="Ojiva de la distribución",col.main="darksalmon")
}
Para poner a prueba la función construida anteriormente establecemos un vector aleatorio proveniente de una distribución normal con \(\mu=20\) y \(\sigma=5\) y como tamaño de la muestra escogeremos 100:
set.seed(9001)
x=round(rnorm(100,20,5),1)
tabla(x,1) #Aplicando el método de Sturges
## lim.inf lim.sup MC frecuencia f.acumulada f.relativa f.rel.acum
## 1 8.3 11.2 9.75 5 5 0.05 0.05
## 2 11.2 14.1 12.65 8 13 0.08 0.13
## 3 14.1 17.0 15.55 17 30 0.17 0.30
## 4 17.0 19.9 18.45 21 51 0.21 0.51
## 5 19.9 22.8 21.35 20 71 0.20 0.71
## 6 22.8 25.7 24.25 17 88 0.17 0.88
## 7 25.7 28.6 27.15 10 98 0.10 0.98
## 8 28.6 31.5 30.05 2 100 0.02 1.00
## porcentaje
## 1 5
## 2 8
## 3 17
## 4 21
## 5 20
## 6 17
## 7 10
## 8 2
set.seed(9001)
x=round(rnorm(100,20,5),1)
tabla(x,2) #Aplicando el método de Freedman-Diaconis
## lim.inf lim.sup MC frecuencia f.acumulada f.relativa f.rel.acum
## 1 8.3 11.2 9.75 5 5 0.05 0.05
## 2 11.2 14.1 12.65 8 13 0.08 0.13
## 3 14.1 17.0 15.55 17 30 0.17 0.30
## 4 17.0 19.9 18.45 21 51 0.21 0.51
## 5 19.9 22.8 21.35 20 71 0.20 0.71
## 6 22.8 25.7 24.25 17 88 0.17 0.88
## 7 25.7 28.6 27.15 10 98 0.10 0.98
## 8 28.6 31.5 30.05 2 100 0.02 1.00
## porcentaje
## 1 5
## 2 8
## 3 17
## 4 21
## 5 20
## 6 17
## 7 10
## 8 2
set.seed(9001)
x=round(rnorm(100,20,5),1)
tabla(x,3) #Aplicando el método de Scott
## lim.inf lim.sup MC frecuencia f.acumulada f.relativa f.rel.acum
## 1 8.35 11.65 10.0 7 7 0.07 0.07
## 2 11.65 14.95 13.3 10 17 0.10 0.17
## 3 14.95 18.25 16.6 23 40 0.23 0.40
## 4 18.25 21.55 19.9 25 65 0.25 0.65
## 5 21.55 24.85 23.2 21 86 0.21 0.86
## 6 24.85 28.15 26.5 12 98 0.12 0.98
## 7 28.15 31.45 29.8 2 100 0.02 1.00
## porcentaje
## 1 7
## 2 10
## 3 23
## 4 25
## 5 21
## 6 12
## 7 2
A continuación se realiza un cambio en la metodología de la rutina para desarrollar una función que permita detallar una comparación entre los histogramas que tengan como argumento las distintas reglas para establecer clases de intervalos. Asimismo, e desarrollará una opción dentro de la función que permita la inclusión de datos extremos dentro del vector de datos, para lo cual se incuyeron dos datos atípicos dentro de la muestra.
datos.atipicos=function(x,atipico=TRUE)
{
if(atipico==TRUE)
{
# para formar datos atipicos, es muy importante tener en cuenta el rango intercuartílico , y los cuartiles primer y tercero
RI=IQR(x)
primer.cuartil=quantile(x,0.25)
tercer.cuartil=quantile(x,0.75)
atipico1=primer.cuartil-6*RI
atipico2=tercer.cuartil-6*RI
x=c(x,atipico1,atipico2) #definimos un vector con presencia de datos atipicos
par(mfrow=c(1,3))
histo=hist(x,nclass.Sturges(x),ylim=c(0,0.1),col = 10,plot = T,col.main="darkorange",main= "Hist. Sturges",freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 5)
legend("topleft", text.col = "red", bty = "n", legend = expression(paste(mu,"= 20, ", sigma, "= 5,")))
histo2=hist(x,nclass.FD(x),ylim=c(0,0.1),col = 8,plot = T,col.main="darkgreen",main= "Hist. Freedman-Diaconis",freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 5)
legend("topleft", text.col = "red", bty = "n", legend = expression(paste(mu,"= 20, ", sigma, "= 5,")))
histo3=hist(x,nclass.scott(x),ylim=c(0,0.1),col = 7,plot = T,col.main="darkred",main= "Hist. Scott",freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 5)
legend("topleft", text.col = "red", bty = "n", legend = expression(paste(mu,"= 20, ", sigma, "= 5,")))
}
else
{
x=x
par(mfrow=c(1,3))
histo=hist(x,nclass.Sturges(x),ylim=c(0,0.1),col = 10,plot = T,col.main="darkorange",main= "Hist. Sturges",freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 5)
legend("topleft", text.col = "red", bty = "n", legend = expression(paste(mu,"= 20, ", sigma, "= 5,")))
histo2=hist(x,nclass.FD(x),ylim=c(0,0.1),col = 8,plot = T,col.main="darkgreen",main= "Hist. Freedman-Diaconis",freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 5)
legend("topleft", text.col = "red", bty = "n", legend = expression(paste(mu,"= 20, ", sigma, "= 5,")))
histo3=hist(x,nclass.scott(x),ylim=c(0,0.1),col = 7,plot = T,col.main="darkred",main= "Hist. Scott",freq = F)
curve(dnorm(x, 20, 5), add = TRUE, col = 5)
legend("topleft", text.col = "red", bty = "n", legend = expression(paste(mu,"= 20, ", sigma, "= 5,")))
}
}
Para validar la función desarrollada en la rutina 2, se crean vectores aleatorios con distribución normal con \(\mu=20\) y \(\sigma=5\), alterando el valor de la muestra
\(Para\\ n=20\)
set.seed(010)
x=round(rnorm(20,20,5),1)
datos.atipicos(x,atipico = TRUE)
\(Para\\ n=30\)
set.seed(010)
x=round(rnorm(30,20,5),1)
datos.atipicos(x,atipico = TRUE)
\(Para\\ n=50\)
set.seed(010)
x=round(rnorm(50,20,5),1)
datos.atipicos(x,atipico = TRUE)
\(Para\\ n=100\)
set.seed(010)
x=round(rnorm(100,20,5),1)
datos.atipicos(x,atipico = TRUE)
Ante la presencia de datos atípicos y un tamaño de la muestra pequeña, los tres métodos tienen un comportamiento similar, en cuanto a dejar clases vacias y tener un sesgo a la izquierda. Se puede observar que la regla de Scott presenta dificultades en presencia de datos atipicos cuando se tiene un \(n\) inferior a 50, algo que solucionan muy bien Sturges y Freedman-Diaconis.
Se destaca que Sturges a medida que \(n\) crece va eliminado la presencia de los datos atípicos en las clases, distribuyéndose menor que las otras dos reglas; aunque su principal desventaja es que va reduciendo el número de intervalos, lo que causa una perdida de información y una posible interpretación errónea de los resultados. Sin embargo, se infiere que los histogramas de Freedman-Diaconis y Scott van adaptándose mejor a la presencia de datos atipicos cuando se tiene tamaño de muestra superior a 100, generando distintas clases y tomando la forma de una distrbiución normal (como puede apreciarse en las gráficas anteriores).
\(Para\\ n=20\)
set.seed(010)
x=round(rnorm(20,20,5),1)
datos.atipicos(x,atipico = FALSE)
\(Para\\ n=30\)
set.seed(010)
x=round(rnorm(30,20,5),1)
datos.atipicos(x,atipico = FALSE)
\(Para\\ n=50\)
set.seed(010)
x=round(rnorm(50,20,5),1)
datos.atipicos(x,atipico = FALSE)
\(Para\\ n=100\)
set.seed(010)
x=round(rnorm(100,20,5),1)
datos.atipicos(x,atipico = FALSE)
En contraste, cuando no se tienen datos atípicos, Sturges da una variedad de clases o intervalos, al contrario que freedman y scott que necesitan un tamaño de muestra mayor para alcanzar la forma de campana de Gauss.
Teniendo en cuenta los resultados de los dos análisis realizados anteriormente, se podría explicar que Sturges ha sido una de las reglas más utilizadas para determinar el número de intervalos dentro de un histograma debido a que sin la presencia de datos atipicos permite un buen ajuste de los datos. El problema con Sturges deriva en que los datos necesitan provenir de una distribución normal y el tamaño de muestra no debe ser tan grande (\(n<200\)). Si se violan estas dos condiciones utilizar esta regla puede tener consecuencias como interpretación errónea de situaciones o resultados [id]:https://robjhyndman.com/papers/sturges.pdf/ “The problem with Sturges’ rule for constructing histograms”.
Los autores del presente trabajo infieren que Sturges goza de gran popularidad debido a que la mayoría de los estudios realizados tratan de que sus datos provengan de una distribución normal para el cálculo de probabilidades e inferencias estadisticas, esto permite que Sturges tenga buenos resultados intepretación y análisis. Debido a que generalmente los estadistas tratan de identificar datos atípicos de los modelos o de los datos para eliminarlos y que no incidan en los resultados, esto da facilidades a esta técnica para generar histogramas que tengan un buen ajuste a la curva de la distribución normal.
A continuación se aplicarán las rutinas desarrolladas anteriromente tomando como ejemplar la base de datos “Melanoma” de la libreria “MASS”, tomando como variable principal “Thickness”
Thickness:espesor del tumor en milimetros
library(MASS)
attach(Melanoma)
datos.atipicos(thickness,TRUE)
La gráfica anterior determina cual debe ser la regla adecuada para realizar la tabla de datos agupados ideal para la variable de estudio, observamos en detalle cada una de ellas:
Sturges:Observamos que da pocos intervalos, lo que provocaría una perdida de información e interpretación falsa de los resultados.
Freedman-Diaconis Muestra muchos intervalos de clase, lo que produce nuevamente que la información no sea clara.
Scott La regla de Scott parece adecuada debido a que presenta intervalos adecuados (ni tan numerosos ni tan escasos); esto se debe a que la regla de Scott trabaja bien para \(n>200\) y bajo la presencia de datos atipicos.
tabla(thickness,3)
## lim.inf lim.sup MC frecuencia f.acumulada f.relativa f.rel.acum
## 1 0.1 1.9 1.0 99 99 0.48 0.48
## 2 1.9 3.7 2.8 55 154 0.27 0.75
## 3 3.7 5.5 4.6 24 178 0.12 0.87
## 4 5.5 7.3 6.4 11 189 0.05 0.92
## 5 7.3 9.1 8.2 7 196 0.03 0.95
## 6 9.1 10.9 10.0 1 197 0.00 0.95
## 7 10.9 12.7 11.8 3 200 0.01 0.96
## 8 12.7 14.5 13.6 3 203 0.01 0.97
## 9 14.5 16.3 15.4 1 204 0.00 0.97
## 10 16.3 18.1 17.2 1 205 0.00 0.97
## porcentaje
## 1 48
## 2 27
## 3 12
## 4 5
## 5 3
## 6 0
## 7 1
## 8 1
## 9 0
## 10 0
El presente trabajo de investigación demostró que, en teoría, no existe una mejor regla o técnica para escoger el número de intervalos dentro de un conjunto de datos ( a pesar de la gran popularidad que goza Sturges dentro de los textos academicos y de ambientes escolares) debido a que cada una presenta algunos tipos de limitaciones y restricciones que pueden provocar errores estadísticos que pueden incidir drásticamente en la inferencia de resultados.
Se puede asegurar que es muy importante estudiar la naturaleza de cada una de las distribuciones de los datos, tamaño de la muestra y si existen datos atípicos para poder elegir aquella regla que mejor represente tanto gráficamente como en forma tabular la distribución de los datos.
Las fórmulas de Scott y Freedman-Diaconis presentan resultados muy similares en cuanto a la distribución que cada una de sus reglas le asignan a los datos dentro del histograma, pero la variable thickness muestra como para un tamaño de muestra grande y con presencia de datos atipicos , darles un mejor tratamiento a los datos y resultados razonables .
Por su parte, Sturges y Freedman tienen un buen funcionamiento ante conjuntos de datos menores a 100. Principalmente Sturges que daba una buena forma de campana en el momento de representación del histograma. Sin embargo, para datos atipicos es importante verificar otras reglas más útiles que la misma Sturges.
Por lo tanto, es importante conocer estas técnicas de clases para intervalos debido a que permite al investigador establecer un criterio adecuado al momento de decidir como organizar los datos en las tablas de frecuencia y, de esta forma tener resultados precisos y confiables, que es el fin que se persigue en todo estudio estadístico.
W. HÄRDLE (1990) Smoothing Techniques with Implementation in S. Berlin : Springer-Verlag, 1990.
Hyndman, R.J (1995) The problem with Sturges’ rule for constructing histograms.
Felicidad Marqués Asensio (2017) R en profundidad Programación, graficos y estadística
Introducción a la estadística computacional usando R. Elmer Rodriguez (2018)