in

Cuándo usar la prueba de Kolmogorov-Smirnov

06 tGMKCT1ZA17OAT

Cuándo usar la prueba de Kolmogorov-Smirnov

Teoría, aplicación e interpretación

Nadim Kawwa

14 de febrero de 2020·6 min de lectura

0*6 tGMKCT1ZA17OAT

Motivación

La prueba de hipótesis se utiliza en muchas aplicaciones y la metodología parece bastante sencilla. Sin embargo, muchas veces tendemos a pasar por alto las suposiciones subyacentes y necesitamos preguntarnos: ¿Estamos comparando manzanas con naranjas? La pregunta también surge cuando los científicos de datos deciden descartar observaciones basadas en características faltantes.

Imagina que tenemos características f1, f2,… fn y un ta binariorobtener variable y. Suponiendo que a muchas observaciones les falta información para una o más características, decidimos descartar estas observaciones (filas). Al hacerlo, podríamos haber alterado la distribución de una característica. fk. Para formular esto como una pregunta: ¿La eliminación de observaciones cambia la distribución de características? Es este cambio significativo?

En este artículo, vamos a presentar algunos supuestos de la prueba t y cómo la prueba de Kolmogorov-Smirnov (KS) puede validar o desacreditar esos supuestos. Dicho esto, es crucial afirmar desde el principio que la prueba t y la prueba KS están probando cosas diferentes.

Para cada paso, presentaremos la teoría e implementaremos el código en Python 3. Para el ejemplo completo, no dude en seguirlo en el cuaderno de jupyter: https://github.com/NadimKawwa/Statistics/blob/master/KS_Test.ipynb

Limitaciones de la prueba t

Hay situaciones en las que deberíamos dudar de los resultados de una prueba t. La prueba t supone que las situaciones producen datos normales que difieren solo en el sentido de que el resultado promedio en una situación es diferente del resultado promedio de la otra situación.

Dicho esto, si aplicamos la prueba t a los datos extraídos de una distribución no normal, probablemente estemos aumentando el riesgo de errores. Según el Teorema del límite central (CLM), la prueba t se vuelve más robusta a medida que los grupos de control / tratamiento se vuelven lo suficientemente grandes.

Sin embargo, la prueba t aún puede fallar en situaciones en las que tenemos una muestra lo suficientemente «grande».

Pequeños conjuntos de datos con la misma media

Considere las dos muestras generadas aleatoriamente en el bloque de código a continuación:

Ambas muestras se generan a partir de distribuciones normales que tienen la misma media, sin embargo, mediante inspección visual, queda claro que ambas muestras son diferentes. Es posible que una prueba t no pueda detectar esta diferencia y decir con seguridad que ambas muestras son idénticas.

Una prueba t con scipy.ttest.ttest_ind en estas muestras da un valor p mayor que 0.05. Por tanto, no podemos rechazar la hipótesis nula de puntuaciones medias idénticas.

Diferente media y misma distribución

Supongamos que generamos dos pequeños conjuntos de datos que difieren en la media, pero una distribución no normal enmascara la diferencia como se muestra en el siguiente código:

Si supiéramos de antemano que los datos no se distribuyen normalmente, no estaríamos utilizando la prueba t para empezar. Con esta idea en mente, presentamos un método para verificar si nuestras observaciones provienen de una distribución de probabilidad de referencia.

La prueba KS

La prueba KS es una prueba no paramétrica y sin distribución: no hace suposiciones sobre la distribución de datos. La prueba KS se puede utilizar para comparar una muestra con una distribución de probabilidad de referencia o para comparar dos muestras.

Supongamos que tenemos observaciones x1, x2, …xn que creemos provienen de una distribución P. La prueba KS se usa para evaluar:

  • Hipótesis nula: las muestras de hecho provienen de P
  • Hipótesis alternativa: Las muestras no provienen de P

Para desarrollar la intuición para la prueba KS, damos un paso atrás y consideramos las estadísticas descriptivas. Se sabe que distribuciones como la distribución normal tienen una media de 0 y una desviación estándar de 1. Por lo tanto, esperamos que no más del 15% de los datos estén más de 1 desviación estándar por debajo de la media.

Usaremos la función de distribución acumulativa (CDF). Más específicamente, usaremos la Función de distribución empírica (EDF): una estimación de la función de distribución acumulada que generó los puntos en la muestra.

La utilidad de la CDF es que caracteriza de forma única una distribución de probabilidad. Queremos comparar la función de distribución empírica de los datos observados, F_obs, con la función de distribución acumulativa asociada con la hipótesis nula, F_exp .

Prueba si la muestra pertenece a la distribución

En el primer ejemplo, supongamos que la hipótesis nula es que nuestras muestras provienen de una distribución normal N(0,1). Queremos comparar la función de distribución empírica de los datos observados, con la función de distribución acumulada asociada con la hipótesis nula.

Este es el método para configurar este experimento:

  • Ordene las observaciones en orden ascendente
  • Calcular la CDF de las observaciones
  • Para cada observación xi calcule F_exp (xi) = P (Z ≤ xi)
  • Calcule las diferencias absolutas
  • Registra la diferencia máxima
  • Calcule el valor crítico
  • Rechazar o aceptar hipótesis nulas

La implementación es bastante sencilla:

La siguiente gráfica muestra una representación visual de lo que estamos haciendo. Los valores observados F_obs están representados por la curva azul mientras que los valores teóricos F_exp están representados por la curva naranja. Las líneas verticales verdes son las diferencias entre las observadas y las teóricas.

1*73C9Sx1lB6NZ E6XQPnVaQ

Si nuestra diferencia máxima es menor que D_Crit no rechazamos la hipótesis nula. El valor crítico al 95% se aproxima por:

1*NBTOXCr9vea96nj2yAdiZw

Donde n es el número de muestras.

KS para dos muestras

Dadas dos muestras x y y, deseamos probar si se extraen de la misma distribución P. Lo primero que cambia es la fórmula para aproximar el valor crítico del 95%:

Dónde n_x y n_y son el número de observaciones en cada muestra.

Vamos a generar aleatoriamente dos muestras aleatorias a partir de dos distribuciones:

  • Normal
  • Lognormal

Para comparar los dos implementamos los siguientes pasos:

  • Ordene cada muestra
  • Concatenar en una matriz ordenada
  • Calcule las funciones de distribución acumulativa observadas de las dos muestras.
  • Calcule su diferencia absoluta máxima D_n
  • Comparar con D_crit

Antes de implementar el código, presentamos lo que buscamos lograr visualmente en la siguiente gráfica. Mirando el CDF podemos decir intuitivamente que las muestras a & b no provienen de la misma distribución.

1*90cqn9dTW oJZpRO

En el bloque de código a continuación, implementaremos los dos primeros pasos.

A continuación, utilizamos el percentil de puntuación de scipy para calcular el CDF como se muestra a continuación:

En nuestro caso D_crit=0.408 y, como era de esperar, obtenemos D_n=0.6 y rechazamos la hipótesis nula de que ambos se extraen de la misma distribución.

Conclusión

Hemos utilizado la prueba KS para comparar una muestra con una distribución de probabilidad de referencia o para comparar dos muestras. En muchas aplicaciones del día a día, la prueba se utiliza para validar suposiciones y ayudar a orientar las decisiones.

Para una implementación más rápida, el paquete scipy ofrece la prueba KS para una bondad de ajuste o para dos muestras.

Referencias

Wikipedia: https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test https://en.wikipedia.org/wiki/Cumulative_distribution_function

Colegio de San Benito y Universidad de San Juan: http://www.physics.csbsju.edu/stats/KS-test.html

Departamento de Estadística de la Universidad de Oxford: http://www.stats.ox.ac.uk/~massa/Lecture%2013.pdf

Deja una respuesta

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

ksrEN9M9SvEx7b6TZJvP5U 1200 80

El mejor software antivirus 2021 | Antivirus de pago y gratuito probado

oracle social share fb

oracleCloud (OCI) frente a AWS