НачатьНачать бесплатно

Вычисление значения формальной ECDF

Чтобы провести тест Колмогорова–Смирнова, необходимо уметь вычислять значение формальной ECDF в произвольных точках. Иными словами, нам нужна функция ecdf_formal(x, data), которая возвращает значение формальной ECDF, построенной по набору данных data, для каждого значения из массива x. Из трёх представленных ниже реализаций две работают корректно, одна — нет. Среди двух правильных одна работает быстрее. Определите, какая есть какая.

Напомним, что ECDF формально определяется как ECDF(x) = (число наблюдений ≤ x) / (общее число наблюдений). Также рекомендуем ознакомиться с документацией функции 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)

Это упражнение является частью курса

Примеры применения статистического мышления

Посмотреть курс

Практическое интерактивное упражнение

Превратите теорию в практику с помощью одного из наших интерактивных упражнений

Начать упражнение