ML | Prueba de Kolmogorov-Smirnov

La prueba de Kolmogorov-Smirnov es una forma muy eficiente de determinar si dos muestras son significativamente diferentes entre sí. Por lo general, se usa para verificar la uniformidad de los números aleatorios. La uniformidad es una de las propiedades más importantes de cualquier generador de números aleatorios y se puede usar la prueba de Kolmogorov-Smirnov para probarla. 
La prueba de Kolmogorov-Smirnov también se puede usar para probar si dos distribuciones de probabilidad unidimensionales subyacentes difieren. Es una forma muy eficiente de determinar si dos muestras son significativamente diferentes entre sí. 
 

El estadístico de Kolmogorov-Smirnov cuantifica una distancia entre la función de distribución empírica de la muestra y la función de distribución acumulada de la distribución de referencia, o entre las funciones de distribución empírica de dos muestras.

Para usar la prueba para verificar la uniformidad de los números aleatorios, usamos la CDF (función de distribución acumulativa) de U[0, 1]. 
 

F(x)=x  for 0<=x<=1 

CDF empírica, Sn(x)= (número de R1, R2…Rn < x) / N array de números aleatorios, los números aleatorios deben estar en el rango de [0, 1].
 

Hipótesis utilizada –

H 0 (Hipótesis Nula): La hipótesis nula asume que los números están distribuidos uniformemente entre 0-1. 
Si podemos rechazar la Hipótesis Nula, esto significa que los números no están distribuidos uniformemente entre 0-1. No rechazar la hipótesis nula aunque no significa necesariamente que los números sigan la distribución uniforme. 
  
 

función kstest en scipy Python –

Parámetros:
 

Estadísticas: Este es el valor calculado de D, donde D=|F(x)-Sn(x)|. 
-> Esta D se compara con D alfa donde alfa es el nivel de significación. Alfa se define como la probabilidad de rechazar la hipótesis nula dado que la hipótesis nula (H 0 ) es verdadera. Para la mayoría de las aplicaciones prácticas, alfa se elige como 0,05. 
p-value: Este se calcula con la ayuda de D. 
-> Si pvalue > alfa, no logramos rechazar la hipótesis nula. De lo contrario, concluimos que los números no son uniformes. Idealmente, el valor p debería ser lo más grande posible. Para distribución uniforme perfecta pvalue=1 y Estadísticas=0.

Python3

from scipy.stats import kstest
import random
 
# N = int(input("Enter number of random numbers: "))
N = 5
 
actual =[]
print("Enter outcomes: ")
for i in range(N):
    # x = float(input("Outcomes of class "+str(i + 1)+": "))
    actual.append(random.random())
 
print(actual)
x = kstest(actual, "uniform")  
print(x)

Producción: 
 

  
KS Test es una forma muy poderosa de diferenciar automáticamente muestras de una distribución diferente. La función kstest también se puede usar para verificar si los datos proporcionados siguen la distribución normal o no. Compara las frecuencias relativas acumuladas observadas frente a las esperadas de la distribución normal. La prueba de Kolmogorov-Smirnov utiliza la diferencia absoluta máxima entre la distribución acumulada observada y esperada.
 

  • La hipótesis nula utilizada aquí asume que los números siguen la distribución normal.
  • El funcionamiento de la función sigue siendo exactamente el mismo. Nuevamente devuelve estadísticas y valor p. Si el valor p es < alfa, rechazamos la hipótesis nula.

Python3

from scipy.stats import kstest
import random
 
# N = int(input("Enter number of random numbers: "))
N = 10
 
actual =[]
print("Enter outcomes: ")
 
for i in range(N):
    # x = float(input("Outcomes of class "+str(i + 1)+": "))
    actual.append(random.random())
 
print(actual)
x = kstest(actual, "norm")  
print(x)

Producción: 
 

Publicación traducida automáticamente

Artículo escrito por AsthaMehta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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