datos<-c(5, 3, 2, 6, 9, 10, 21, 2, 5, 10, 12, 11, 10)Prueba de normalidad
¿Qué es una prueba de normalidad?
Las pruebas de normalidad son métodos estadísticos utilizados para determinar si una muestra de datos sigue una distribución normal. Estas pruebas son relevantes en el análisis estadístico, ya que muchos procedimientos estadísticos se basan en la suposición de normalidad de los datos (Flores-Tapia y Flores-Ceballos, 2021).
Tipos de pruebas de normalidad
Gráficas
- Histograma: Permite comparar visualmente la forma de los datos con una curva normal.
- Gráfico Q-Q (Quantile-Quantile): Compara los cuantiles de los datos con los cuantiles de una distribución normal. Si los puntos caen aproximadamente sobre una línea recta, los datos se consideran normales
Pruebas de hipótesis
- Shapiro-Wilk. Prueba para muestras pequeñas que calcula una estadístico W que mide qué tan bien se ajustan los datos a una distribución normal.
Kolmogorov-Smirnov: Compara la función de distribución empírica de la muestra con la distribución normal teórica.
Anderson-Darling Evalúa qué tan compatibles son los datos observados con una distribución normal teórica, dando más peso a las colas de la distribución
Prueba de D’Agostino K²: Evalúa la asimetría y curtosis de los datos para determinar desviaciones de la normalidad
Nota: Estudiar la normalidad permite verificar si los supuestos del método estadístico que queremos utilizar son adecuados. Ignorarla puede conducir a inferencias poco confiables, como p-valores o intervalos de confianza que podrían no comportarse como el método estadístico afirma que deberían hacerlo.
Implementación en R-Studio
1-Prueba de Shapiro-Wilk
La prueba de Shapiro-Wilk es una prueba de hipótesis que permite determinar si un conjunto de datos es compatible con una distribución normal. Funciona mejor cuando las muestras son pequeñas.
Las hipótesis que se plantean son:
\(H_0\):Los datos siguen una distribución normal
\(H_1\):Los datos no siguen una distribución normal
Para tomar una decisión utilizaremos un nivel de significancia de \(\alpha=0.05\).
- Si \(p>0.05\), no se rechaza \(H_0\). No existe evidencia suficiente para afirmar que los datos no siguen una distribución normal.
- Si \(p\leq0.05\), se rechaza \(H_0\). Existe evidencia estadísticamente significativa de que los datos no siguen una distribución normal.
En R podemos realizar esta prueba mediante la función shapiro.test().
Ejemplo sencillo
Primero creamos un vector que contiene los datos que queremos analizar:
Después aplicamos la prueba de Shapiro-Wilk.
shapiro.test(datos)El resultado aparece en el siguiente formato:
Shapiro-Wilk normality test
data: datos
W = 0.89306, p-value = 0.1074
En este caso, el valor obtenido es: \(p=0.1074\) . Como: \(0.1074>0.050\) no se rechaza \(H_0\). Por lo tanto, no existe evidencia suficiente para afirmar que estos datos se alejan de una distribución normal.
2-Prueba de Lilliefors
Adaptación de Kolmogorov-Smirnov
Para muestras mayores utilizaremos la prueba de Lilliefors, una adaptación de la prueba de Kolmogorov-Smirnov para evaluar la normalidad cuando los parámetros de la distribución normal son estimados a partir de los datos. Se aplica ampliamente en muestras grandes.
Las hipótesis son:
\(H_0\): Los datos siguen una distribución normal.
\(H_1\): Los datos no siguen una distribución normal.
La regla de decisión también será:
- Si \(p>0.05\), no se rechaza \(H_0\).
- Si \(p\leq0.05\), se rechaza \(H_0\).
La función lillie.test() que se encuentra en el paquete nortest
Si todavía no tenemos instalado el paquete, podemos instalarlo mediante:
# install.packages("nortest")Después cargamos el paquete:
library(nortest)Ejemplo sencillo
Para practicar esta prueba utilizaremos un conjunto de datos con más observaciones.
Primero creamos un vector:
datos_mayores <-
c(12, 15, 14, 16, 13, 17, 18, 15, 14, 16,
13, 12, 15, 17, 19, 16, 14, 15, 13, 18,
16,15, 14, 17, 13, 16, 15, 14, 18, 17,
15, 16, 14, 13, 17, 18, 15, 16, 14, 15,
13, 17, 16, 15, 14, 18, 17, 16, 15, 14,
13, 16, 17, 15, 14, 18, 16, 15, 17, 14 )Podemos verificar el tamaño de la muestra:
length(datos_mayores)[1] 60
Ahora aplicamos la prueba de Lilliefors:
lillie.test(datos_mayores)El resultado aparece en el siguiente formato:
Lilliefors (Kolmogorov-Smirnov) normality test
data: datos_mayores
D = 0.12845, p-value = 0.01525
En esta prueba observamos el estadístico D y, principalmente, el p-value para tomar una decisión sobre la normalidad.
Interpretación
La decisión se toma de la misma manera:
- Si \(p>0.05\), no se rechaza \(H_0\).
- Si \(p\leq0.05\), se rechaza \(H_0\).
En este caso, dado que \(p=0.01525\), entonces \(p<0.05\). Por lo que se rechaza \(H_0\) y se concluye que por \(H_1\), los datos No siguen una distribución normal.
Práctica. Normalidad de los tiempos netos de carrera
Ahora aplicaremos las pruebas de normalidad a una situación real utilizando la base de datos TenMileRace.
En esta actividad analizaremos la variable net, que corresponde al tiempo neto de carrera, y compararemos su comportamiento entre hombres y mujeres.
Primero cargamos la base de datos:
library(mosaicData)
data(TenMileRace)Podemos observar las primeras observaciones de la base:
head(TenMileRace) state time net age sex
1 VA 6060 5978 12 M
2 MD 4515 4457 13 M
3 VA 5026 4928 13 M
4 MD 4229 4229 14 M
5 MD 5293 5076 14 M
6 VA 6234 5968 14 M
Tiempo neto de los hombres (Intervalos)
Primero seleccionaremos únicamente a los hombres.
hombres <- subset(TenMileRace, sex == "M")Nota: subset() permite seleccionar las observaciones que cumplen una condición.
Ahora extraemos la variable net:
datos_hombres <- hombres$netVerificamos el tamaño de la muestra:
length(datos_hombres)[1] 4311
Al ser un número de datos muy grande, se decidió dividir en intervalos según rangos de edad.
Intervalo 1 (10-19 años)
Intervalo 2 (20-29 años)
Intervalo 3 (30-49 años)
Intervalo 4: (50-69 años)
Intervalo 5 (70+ años)
Ejemplo
Para analizar la información de los datos en el Intervalo 1.
Definimos:
hombres_10_19 <- subset(TenMileRace, sex == "M" & age >= 10 & age <= 19 )
datos_hombres_10_19 <- hombres_10_19$net Comprobamos el tamaño del intervalo para elegir la prueba a realizar.
length(datos_hombres_10_19) [1] 40
En este caso, al ser una muestra menor a 50, aplicamos shapiro.test()
shapiro.test(datos_hombres_10_19)
Shapiro-Wilk normality test
data: datos_hombres_10_19
W = 0.95146, p-value = 0.08514
El valor obtenido es: \(p=0.08514\) . Como: \(0.08514>0.050\) no se rechaza \(H_0\)
Por lo tanto, no existe evidencia suficiente para afirmar que estos datos se distribuyen normalmente.
Actividad
Determina si los datos dentro del intervalo (30-49 años) tienen una distribución normal.
¿Qué valor de \(p\)-value obtuviste?
Tiempo neto de los hombres (General)
Una vez hemos analizado cada intervalo por separado. Podemos optar por un panorama más general de los datos.
Actividad
Aplica la prueba de normalidad que corresponde al tamaño de la muestra.
¿Qué valor de \(p\)-value obtuviste?
¿Se rechaza o no se rechaza \(H_0\)?
¿Qué puedes concluir sobre la normalidad de los tiempos netos de los hombres?
Referencias
Flores Tapia, C. E., & Flores Cevallos, K. L. (2021). Pruebas para comprobar la normalidad de datos en procesos productivos: Anderson-Darling, Ryan-Joiner, Shapiro-Wilk y Kolmogórov-Smirnov. Societas. Revista de Ciencias Sociales y Humanísticas, 23(2), 83–106.