Saltar al contenido

Realice una prueba de normalidad de Shapiro-Wilk

Solución:

¿Qué hace shapiro.test?

shapiro.test prueba el Hipótesis nula que “las muestras provienen de una distribución normal” contra los hipótesis alternativa “las muestras no proceden de una distribución Normal”.

¿Cómo realizar shapiro.test en R?

La página de ayuda de R para ?shapiro.test da,

x - a numeric vector of data values. Missing values are allowed, 
    but the number of non-missing values must be between 3 and 5000.

Es decir, shapiro.test espera un vector numérico como entrada, que corresponde a la muestra que le gustaría probar y es la única entrada requerida. Ya que tienes un marco de datos, tendrá que pasar la columna deseada como entrada a la función de la siguiente manera:

> shapiro.test(heisenberg$HWWIchg)
#   Shapiro-Wilk normality test

# data:  heisenberg$HWWIchg 
# W = 0.9001, p-value = 0.2528

Interpretación de los resultados de shapiro.test:

Primero yo fuertemente te sugiero lee esta excelente respuesta de Ian Fellows en testing for normality.

Como se muestra arriba, el shapiro.test prueba la hipótesis NULL de que las muestras provienen de una distribución Normal. Esto significa que si tu valor p <= 0,05, entonces lo harías rechazar la hipótesis NULL de que las muestras procedían de una distribución Normal. Como lo expresó amablemente Ian Fellows, estas probando contra el supuesto de normalidad“. En otras palabras (corríjame si me equivoco), sería mucho mejor si se prueba la hipótesis NULL de que las muestras no provienen de una distribución Normal. ¿Por qué? Porque rechazar una hipótesis NULL es no es el mísmo como aceptar la hipótesis alternativa.

En el caso de la hipótesis nula de shapiro.test, un valor p <= 0.05 rechazaría la hipótesis nula de que las muestras provienen de una distribución normal. Para decirlo libremente, hay una rara oportunidad que las muestras procedían de una distribución normal. El efecto secundario de esta prueba de hipótesis es que este rara oportunidad sucede muy raramente. Para ilustrar, tomemos por ejemplo:

set.seed(450)
x <- runif(50, min=2, max=4)
shapiro.test(x)
#   Shapiro-Wilk normality test
# data:  runif(50, min = 2, max = 4) 
# W = 0.9601, p-value = 0.08995

Entonces, esta muestra (particular) runif(50, min=2, max=4) proviene de una distribución normal según esta prueba. Lo que estoy tratando de decir es que hay muchos casos en los que los requisitos “extremos” (p <0.05) no se satisfacen, lo que conduce a la aceptación de la "hipótesis NULA" la mayoría de las veces, lo que puede ser engañoso.

Otro problema que me gustaría citar aquí de @PaulHiemstra de los comentarios sobre los efectos en el tamaño de muestra grande:

Un problema adicional con la prueba de Shapiro-Wilk es que cuando le da más datos, las posibilidades de que se rechace la hipótesis nula aumentan. Entonces, lo que sucede es que para grandes cantidades de datos, incluso se pueden detectar desviaciones muy pequeñas de la normalidad, lo que lleva al rechazo del evento de hipótesis nula aunque, para fines prácticos, los datos son más que lo suficientemente normales.

Aunque también señala que el límite de tamaño de datos de R protege esto un poco:

Afortunadamente, shapiro.test protege al usuario del efecto descrito anteriormente al limitar el tamaño de los datos a 5000.

Si la hipótesis NULL fuera la opuesta, es decir, las muestras no provienen de una distribución normal, y obtienes un valor de p <0,05, entonces concluyes que es muy raro que estas muestras no provienen de una distribución normal (rechace la hipótesis NULL). Eso se traduce en términos generales en: Es muy probable que las muestras estén distribuidas normalmente (aunque a algunos estadísticos puede que no les guste esta forma de interpretación). Creo que esto es lo que también trató de explicar Ian Fellows en su publicación. ¡Por favor corríjame si me he equivocado en algo!

@PaulHiemstra también comenta sobre situaciones prácticas (ejemplo de regresión) cuando uno se encuentra con este problema de probar la normalidad:

En la práctica, si un análisis asume normalidad, p. Ej., Yo no haría esta prueba de Shapiro-Wilk, sino que haría el análisis y observaría gráficos de diagnóstico del resultado del análisis para juzgar si alguna suposición del análisis fue violada demasiado. Para la regresión lineal usando lm, esto se hace mirando algunas de las gráficas de diagnóstico que obtiene usando plot (lm ()). Las estadísticas no son una serie de pasos que arrojan algunos números (¡oye, p <0.05!), Sino que requieren mucha experiencia y habilidad para juzgar cómo analizar correctamente los datos.

Aquí, encuentro la respuesta de Ian Fellows al comentario de Ben Bolker bajo la misma pregunta ya vinculada anteriormente igualmente (si no más) informativa:

Para la regresión lineal,

  1. No se preocupe mucho por la normalidad. El CLT se hace cargo rápidamente y si tiene todos los tamaños de muestra excepto los más pequeños y un histograma de apariencia remotamente razonable, está bien.

  2. Preocuparse por variaciones desiguales (heterocedasticidad). Me preocupo por esto hasta el punto de (casi) usar pruebas HCCM por defecto. Un gráfico de ubicación a escala dará una idea de si está roto, pero no siempre. Además, no existe una razón a priori para asumir varianzas iguales en la mayoría de los casos.

  3. Valores atípicos. Una distancia de cocción> 1 es un motivo de preocupación razonable.

Esos son mis pensamientos (FWIW).

Espero que esto aclare las cosas un poco.

Estas aplicando shapiro.test() a un data.frame en lugar de la columna. Intente lo siguiente:

shapiro.test(heisenberg$HWWIchg)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *