ComeçarComece de graça

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

Ver curso

Exercício interativo prático

Transforme a teoria em ação com um de nossos exercícios interativos

Começar o exercício