Cómo realizar una prueba de Kolmogorov-Smirnov en Python

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

La prueba de Kolmogorov-Smirnov se utiliza para comprobar si una muestra procede o no de una determinada distribución.

Para realizar una prueba de Kolmogorov-Smirnov en Python, podemos usar scipy.stats.kstest () para una prueba de una muestra o scipy.stats.ks_2samp () para una prueba de dos muestras.

Este tutorial muestra un ejemplo de cómo utilizar cada función en la práctica.

Ejemplo 1: Prueba de Kolmogorov-Smirnov de una muestra

Supongamos 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 Kolmogorov-Smirnov en esta muestra de 100 valores de datos para determinar si provienen de una distribución normal:

de scipy.stats importar kstest

# realizar la prueba kstest de Kolmogorov-Smirnov 
(datos, ' norma ')

KstestResult (estadístico = 0.9072498680518208, pvalue = 1.0908062873170218e-103)

De la salida podemos ver que el estadístico de prueba es 0.9072 y el valor p correspondiente es 1.0908e-103 . 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 .

Ejemplo 2: Prueba de Kolmogorov-Smirnov de dos muestras

Supongamos que tenemos los siguientes dos conjuntos de datos de muestra:

de numpy.random importar semilla
 de numpy.random importar randn
 de numpy.random importar lognormal

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

#generar dos conjuntos de datos
 data1 = randn (100)
data2 = lognormal (3, 1, 100)

El siguiente código muestra cómo realizar una prueba de Kolmogorov-Smirnov en estas dos muestras para determinar si provienen de la misma distribución:

de scipy.stats importar ks_2samp

# realizar la prueba de Kolmogorov-Smirnov
ks_2samp (datos1, datos2)

KstestResult (estadístico = 0,99, pvalue = 4,417521386399011e-57)

A partir de la salida, podemos ver que el estadístico de prueba es 0,99 y el valor p correspondiente es 4,4175e-57 . Dado que el valor p es menor que .05, rechazamos la hipótesis nula. Tenemos suficiente evidencia para decir que los dos conjuntos de datos de muestra no provienen de la misma distribución.

Este resultado tampoco debería sorprender, ya que generamos valores para la primera muestra usando la distribución normal estándar y valores para la segunda muestra usando la distribución lognormal.

Recursos adicionales

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

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

Deja un comentario

En estadística, los deciles son números que dividen un conjunto de datos en diez grupos de igual frecuencia. El primer…
statologos comunidad-2

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

You have Successfully Subscribed!