Calculando a estatística K-S
Escreva uma função para calcular a estatística de Kolmogorov–Smirnov a partir de dois conjuntos de dados, data1 e data2, em que data2 consiste em amostras da distribuição teórica com a qual você está comparando seus dados. Note que isso significa que estamos usando hacker stats para calcular a estatística K-S para um conjunto de dados e uma distribuição teórica, e não a estatística K-S para dois conjuntos de dados empíricos. Por conveniência, a função que você acabou de selecionar para calcular valores da ECDF formal é dcst.ecdf_formal().
Este exercício faz parte do curso
Estudos de caso em pensamento estatístico
Instruções do exercício
- Calcule os valores dos cantos convexos da ECDF formal para
data1usandodcst.ecdf(). Armazene os resultados nas variáveisxey. - Use
dcst.ecdf_formal()para calcular os valores da CDF teórica, determinada a partir dedata2, nos cantos convexosx. Armazene o resultado na variávelcdf. - Calcule as distâncias entre os cantos côncavos da ECDF formal e a CDF teórica. Armazene o resultado como
D_top. - Calcule a distância entre os cantos convexos da ECDF formal e a CDF teórica. Observe que você precisará subtrair
1/len(data1)deypara obter o valor deyno canto convexo. Armazene o resultado emD_bottom. - Retorne a estatística K-S como o máximo de todas as entradas em
D_topeD_bottom. Você pode passarD_topeD_bottomjuntos como uma tupla paranp.max()para fazer isso.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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))