Cómo realizar una prueba de Shapiro-Wilk en Python

Actualizado por ultima vez el 7 de mayo de 2021, por .

La prueba de Shapiro-Wilk es una prueba de normalidad. Se utiliza para determinar si una muestra proviene o no de una distribución normal .

Para realizar una prueba de Shapiro-Wilk en Python podemos utilizar la función scipy.stats.shapiro () , que adopta la siguiente sintaxis:

scipy.stats.shapiro (x)

dónde:

  • x: una matriz de datos de muestra.

Esta función devuelve una estadística de prueba y un valor p correspondiente. Si el valor p está por debajo de un cierto nivel de significancia, entonces tenemos suficiente evidencia para decir que los datos de la muestra no provienen de una distribución normal.

Este tutorial muestra un par de ejemplos de cómo utilizar esta función en la práctica.

Ejemplo 1: Prueba de Shapiro-Wilk en datos distribuidos normalmente

Supongamos que tenemos los siguientes datos de muestra:

de numpy.random importar semilla
 de numpy.random import randn

#set seed (por ejemplo, hacer que este ejemplo sea reproducible)
semilla (0)

# generar un conjunto de datos de 100 valores aleatorios que sigan una distribución normal estándar
 data = randn (100)

El siguiente código muestra cómo realizar una prueba de Shapiro-Wilk en esta muestra de 100 valores de datos para determinar si provienen de una distribución normal:

de scipy.stats importar shapiro

# realizar la prueba de Shapiro-Wilk
shapiro (datos)

ShapiroResult (estadístico = 0,9926937818527222, pvalue = 0,8689165711402893)

A partir de la salida, podemos ver que el estadístico de prueba es 0,9927 y el valor p correspondiente es 0,8689 . Dado que el valor p no es menor que .05, no rechazamos la hipótesis nula. No tenemos evidencia suficiente para decir que los datos de la muestra no provienen de una distribución normal.

Este resultado no debería sorprender, ya que generamos los datos de muestra utilizando la función randn () , que genera valores aleatorios que siguen una distribución normal estándar.

Ejemplo 2: Prueba de Shapiro-Wilk en datos distribuidos de forma no normal

Ahora suponga que tenemos los siguientes datos de muestra:

de numpy.random importar semilla
 de numpy.random import poisson

#set seed (por ejemplo, hacer que este ejemplo sea reproducible)
semilla (0)

# generar un conjunto de datos de 100 valores que sigan una distribución de Poisson con media = 5
 datos = poisson (5, 100)

El siguiente código muestra cómo realizar una prueba de Shapiro-Wilk en esta muestra de 100 valores de datos para determinar si provienen de una distribución normal:

de scipy.stats importar shapiro

# realizar la prueba de Shapiro-Wilk
shapiro (datos)

ShapiroResult (estadístico = 0.9581913948059082, pvalue = 0.002994443289935589)

De la salida podemos ver que el estadístico de prueba es 0.9582 y el valor p correspondiente es 0.00299 . Dado que el valor p es menor que .05, rechazamos la hipótesis nula. Tenemos evidencia suficiente para decir que los datos de la muestra no provienen de una distribución normal.

Este resultado tampoco debería sorprender, ya que generamos los datos de muestra utilizando la función poisson () , que genera valores aleatorios que siguen una distribución de Poisson .

Recursos adicionales

Cómo realizar una prueba de Shapiro-Wilk en R
Cómo realizar una prueba de Anderson-Darling en Python
Cómo realizar una prueba de Kolmogorov-Smirnov en Python

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Se utiliza un ANOVA de una vía para determinar si existe o no una diferencia estadísticamente significativa entre las medias…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!