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

Вычисление статистики Колмогорова–Смирнова

Напишите функцию для вычисления статистики Колмогорова–Смирнова по двум наборам данных — data1 и data2, где data2 содержит выборки из теоретического распределения, с которым вы сравниваете свои данные. Обратите внимание: здесь мы используем хакерскую статистику для вычисления статистики К–С для набора данных и теоретического распределения, а не для двух эмпирических наборов данных. Для удобства функция вычисления значений формальной эмпирической функции распределения уже доступна как dcst.ecdf_formal().

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

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

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

Инструкции к упражнению

  • Вычислите значения выпуклых угловых точек формальной эмпирической функции распределения для data1 с помощью dcst.ecdf(). Сохраните результаты в переменных x и y.
  • Используйте dcst.ecdf_formal(), чтобы вычислить значения теоретической функции распределения, определённой по data2, в выпуклых угловых точках x. Сохраните результат в переменной cdf.
  • Вычислите расстояния между вогнутыми угловыми точками формальной эмпирической функции распределения и теоретической функцией распределения. Сохраните результат в D_top.
  • Вычислите расстояния между выпуклыми угловыми точками формальной эмпирической функции распределения и теоретической функцией распределения. Обратите внимание: чтобы получить значение y в выпуклой угловой точке, необходимо вычесть 1/len(data1) из y. Сохраните результат в D_bottom.
  • Верните статистику К–С как максимум всех элементов D_top и D_bottom. Для этого можно передать D_top и D_bottom вместе в виде кортежа в np.max().

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

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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))
Редактировать и запускать код