Вычисление значения формальной 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)
Это упражнение является частью курса
Примеры применения статистического мышления
Практическое интерактивное упражнение
Превратите теорию в практику с помощью одного из наших интерактивных упражнений
Начать упражнение