Calcular la estadística K-S
Escribe una función para calcular la estadística de Kolmogorov–Smirnov a partir de dos conjuntos de datos, data1 y data2, donde data2 contiene muestras de la distribución teórica con la que estás comparando tus datos. Ten en cuenta que esto significa que estamos usando hacker stats para calcular la estadística K-S para un conjunto de datos y una distribución teórica, no la estadística K-S para dos conjuntos de datos empíricos. Por suerte, la función que acabas de seleccionar para calcular valores de la ECDF formal es dcst.ecdf_formal().
Este ejercicio forma parte del curso
Casos prácticos de pensamiento estadístico
Instrucciones del ejercicio
- Calcula los valores de las esquinas convexas de la ECDF formal para
data1usandodcst.ecdf(). Guarda los resultados en las variablesxey. - Usa
dcst.ecdf_formal()para calcular los valores de la CDF teórica, determinada a partir dedata2, en las esquinas convexasx. Guarda el resultado en la variablecdf. - Calcula las distancias entre las esquinas cóncavas de la ECDF formal y la CDF teórica. Guarda el resultado como
D_top. - Calcula la distancia entre las esquinas convexas de la ECDF formal y la CDF teórica. Ten en cuenta que tendrás que restar
1/len(data1)deypara obtener el valor deyen la esquina convexa. Guarda el resultado enD_bottom. - Devuelve la estadística K-S como el máximo de todas las entradas en
D_topyD_bottom. Para ello, puedes pasarD_topyD_bottomjuntos como una tupla anp.max().
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
def ks_stat(data1, data2):
# Compute ECDF from data: x, y
# Compute corresponding values of the target CDF
cdf = ____
# Compute distances between concave corners and CDF
D_top = ____ - ____
# Compute distance between convex corners and CDF
D_bottom = ____ - ____ + ____/____
return np.max((D_top, D_bottom))