Calculando o valor de uma ECDF formal
Para poder fazer o teste de Kolmogorov–Smirnov, precisamos calcular o valor de uma ECDF formal em pontos arbitrários. Em outras palavras, precisamos de uma função, ecdf_formal(x, data), que retorne o valor da ECDF formal derivada do conjunto de dados data para cada valor no array x. Duas das funções abaixo fazem isso. Uma não faz. Das duas que calculam corretamente, uma é mais rápida. Rotule cada uma.
Como lembrete, a ECDF é definida formalmente como ECDF(x) = (número de amostras ≤ x) / (total de amostras). Talvez você também queira conferir a docstring de np.searchsorted().
a)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x) / len(data)
b)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x, side='right') / len(data)
c)
def ecdf_formal(x, data):
output = np.empty(len(x))
data = np.sort(data)
for i, x_val in x:
j = 0
while j < len(data) and x_val >= data[j]:
j += 1
output[i] = j
return output / len(data)
Este exercício faz parte do curso
Estudos de caso em pensamento estatístico
Exercício interativo prático
Transforme a teoria em ação com um de nossos exercícios interativos
Começar o exercício