Test de Shapiro-Wilk en R

Estadística con R Contrastes de hipótesis
Test de Shapiro Wilk en R

El contraste de Shapiro Wilk es un test utilizado para comprobar la normalidad de los datos, especialmente para conjuntos de datos pequeños, de 50 muestras o menos. En R, la función shapiro.test realiza este test para un vector numérico de valores.

Hipótesis

El contraste de hipótesis de Shapiro-Wilk comprueba la normalidad de los datos. La hipótesis nula (\(H_0\)) es que la distribución de la población es normal, mientras que la hipótesis alternativa es que la distribución de la población no es normal:

  • \(H_0\): La distribución de la población es normal.
  • \(H_1\): La distribución de la población NO es normal.

El test de Shapiro-Wilk se recomienda para conjuntos de datos pequeños, cuando el tamaño de la muestra es 50 o menos. Para conjuntos de datos más grandes se recomienda utilizar el test de Kolmogorov-Smirnov.

Comprobar normalidad e interpretación

Ejemplo con datos no normales

Considera un conjunto de datos de muestra con 30 valores extraídos de una distribución exponencial:

# Datos de muestra
set.seed(3)
x <- rexp(30)

# Histograma y densidad
hist(x, freq = FALSE, col = "white")
lines(density(x), lwd = 2, col = "red")

Test de Shapiro Wilk para comprobar la normalidad en R

Si quieres comprobar si tus datos son normales, puedes introducirlos en la función shapiro.test, como se muestra a continuación.

# Datos de muestra
set.seed(3)
x <- rexp(30)

# Test de Shapiro-Wilk
shapiro.test(x)
	Shapiro-Wilk normality test

data:  x
W = 0.83304, p-value = 0.0002792

La función devolverá una lista formateada de clase "htest" con el nombre de tus datos, el valor del estadístico de Shapiro-Wilk (W) y el p-valor (p-value).

Para interpretar el resultado es necesario comparar el p-valor con un nivel de significación (\(\alpha\)), que es un umbral para determinar si una prueba es estadísticamente significativa o no. Los niveles de significación habituales son 0.1 (para un 90% de confianza), 0.05 (para un 95% de confianza), 0.01 (para un 99% de confianza).

Dado que el p-valor (0.000279) es inferior a los niveles de significación habituales (0.1, 0.05 y 0.01), tenemos pruebas significativas para rechazar la hipótesis nula de normalidad.

Si el p-valor es inferior a \(\alpha\) rechazamos \(H_0\) para el nivel de significación seleccionado.

Ejemplo con datos normales

Consideremos ahora unos datos de muestra extraídos de una distribución normal:

# Datos de muestra
set.seed(5)
x <- rnorm(50)

# Histograma y densidad
hist(x, freq = FALSE, col = "white")
lines(density(x), lwd = 2, col = "red")

La función shapiro.test en R

Si aplicas el contraste de Shapiro-Wilk a estos datos, obtendrás el siguiente resultado:

# Datos de muestra
set.seed(5)
x <- rnorm(30)

# Test de Shapiro-Wilk
shapiro.test(x)
	Shapiro-Wilk normality test

data:  x
W = 0.95084, p-value = 0.178

El p-valor es 0.178, superior a los niveles de significación habituales (0.1, 0.05 y 0.01), por lo que no tenemos pruebas suficientes para rechazar la hipótesis nula de normalidad.