4 votos

Utilidad de las pruebas KS y otras pruebas similares de comparación de distribuciones

Estoy trabajando en un problema de clasificación binaria de aprendizaje automático.

Tengo una variable de resultado status llamado como loan paid y loan default .

Así, tengo los datos del importe del préstamo para cada uno de los préstamos.

Ahora, me gustaría saber si la cantidad prestada es significativamente diferente para loan paid y loan default solicitantes.

Por lo tanto, probé la prueba KS para comparar el importe del préstamo de estos dos grupos.

¿Estoy en lo cierto al hacerlo así?

data1 = loan_df[(loan_df['status']=='default')]['loan_amount'].reset_index(drop=True)
data2 = loan_df[(loan_df['status']=='paid')]['loan_amount'].reset_index(drop=True)
from scipy.stats import ks_2samp

#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)

El resultado es el siguiente

KstestResult(statistic=0.504473708788643, pvalue=5.551115123125783e-16)

Mis preguntas son las siguientes

a) ¿Cuál es la utilidad de estas pruebas? Es decir, si son significativamente diferentes entre sí, ¿ayudan en el poder predictivo?

b) ¿qué tipo de inferencia puede hacerse a partir de dichas pruebas?

c) ¿Existe algún otro método para comparar dos distribuciones? Así, puedo confirmar/verificar dos veces que efectivamente es diferente

1 votos

Sí, estoy explorando los datos. me gustaría saber cómo es útil saber que estas dos distribuciones son diferentes? he actualizado la pregunta

3voto

Dave Puntos 76

Esta es una de esas ideas que empiezan sonando muy bien pero acaban siendo menos útiles de lo que cabría esperar.

Por ejemplo, sólo porque KS (o una prueba similar) diga que la característica tiene una distribución diferente para cada categoría de resultado no significa que a cada modelo le importe. Si las distribuciones sólo difieren en la varianza, por ejemplo, un predictor lineal en una regresión logística no lo detectará. En consecuencia, su característica acabará siendo un fracaso que carece de capacidad predictiva, a pesar de la diferencia de varianza entre sus resultados.

Por consiguiente, las diferencias de distribución no tienen por qué revelar predictores importantes.

Por otra parte, aunque las distribuciones univariantes sean idénticas, las distribuciones multivariantes pueden no serlo. Por ejemplo, imagina un diagrama de dispersión de los puntos que forman una X, donde la parte de la "barra" es un grupo y la "barra" es otro. Esas distribuciones marginales univariantes son las mismas para cada grupo y, sin embargo, esos predictores tienen una capacidad de discriminación considerable. No todos los modelos podrán utilizar la correlación, pero algunos sí.

Por consiguiente, el mero hecho de obtener un resultado que indique que las distribuciones son similares o incluso iguales no significa que una característica sea inútil.

En general, no podemos concluir gran cosa de este tipo de análisis.

EDITAR

Veamos algunas simulaciones.

1)

set.seed(2022)
N <- 1000
x0 <- rnorm(N, 0, 1)
x1 <- rnorm(N, 0, 2)
x <- c(x0, x1)
y <- c(rep(0, N), rep(1, N))
ks.test(x0, x1)
L1 <- glm(y ~ I(x^1), family = binomial)
L2 <- glm(y ~ I(x^2), family = binomial)
summary(L1)
summary(L2)
ks.test(x0, x1)

En esta simulación, $Y=0$ y $Y=1$ tienen diferentes distribuciones en el $x$ característica. Sin embargo, como la diferencia está en la varianza, a una regresión logística que sólo utiliza un predictor lineal no le importa. Tenemos que saber analizar el término cuadrático para obtener un predictor significativo. Esto significa que o bien tenemos que saber qué tipo de diferencia hay entre las distribuciones (que la prueba KS no proporciona) o permitir algún tipo de modelo flexible que lo averigüe, como menciona Frank Harrell en los comentarios.

Por consiguiente, un resultado significativo de la prueba KS no nos ayuda a determinar las características que debemos incluir en el modelo.

2)

library(MASS)
set.seed(2022)
N <- 1000
x0 <- MASS::mvrnorm(N, c(0, 0), matrix(c(1, 0.9, 0.9, 1), 2, 2))
x1 <- MASS::mvrnorm(N, c(0, 0), matrix(c(1, -0.9, -0.9, 1), 2, 2))
x <- rbind(x0, x1)
y <- c(rep(0, N), rep(1, N))
ks.test(x0, x1)
L0 <- glm(y ~ x[, 1] + x[, 2], family = binomial)
L1 <- glm(y ~ x[, 1]*x[, 2], family = binomial)
summary(L0)
summary(L1)
ks.test(x0[, 1], x1[, 1])
ks.test(x0[, 2], x1[, 2])

Aquí, la prueba KS dice que ambas características tienen la misma distribución para ambos niveles de la respuesta. Sin embargo, la distribución conjunta es drásticamente diferente, debido a la diferencia en la correlación (una fuertemente positiva, otra fuertemente negativa). En consecuencia, un modelo que tenga un término de interacción (como L1 ) o que descubre tales interacciones (por ejemplo, redes neuronales, SVMs con ciertos kernels) acaba gritando que las características tienen capacidad discriminativa.

Por consiguiente, un resultado insignificante de la prueba KS no nos ayuda a determinar qué características deben excluirse del modelo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X