Колмогорова смирнова: Критерий Колмогорова-Смирнова

Как выполнить тест Колмогорова-Смирнова в Excel

Редакция Кодкампа

читать 2 мин


Критерий Колмогорова-Смирнова используется для определения нормальности распределения выборки.

Этот тест широко используется, потому что многие статистические тесты и процедуры предполагают , что данные распределены нормально.

В следующем пошаговом примере показано, как выполнить тест Колмогорова-Смирнова для образца набора данных в Excel.

Шаг 1: введите данные

Во-первых, давайте введем значения для набора данных с размером выборки n = 20:

Шаг 2: Расчет фактических и ожидаемых значений из нормального распределения

Далее мы рассчитаем фактические значения по сравнению с ожидаемыми значениями из нормального распределения:

Вот формула, которую мы использовали в различных ячейках:

  • B2 : =СТРОКА() – 1
  • C2 : = B2 /COUNT( $A$2:$A$21 )
  • D2 : =( B2 -1)/СЧЁТ( $A$2:$A$21 )
  • E2 : =ЕСЛИ( C2 <1, НОРМ. С.ОБР( C2 )»,»)
  • F2 : =НОРМ.РАСП( A2 , $J$1 , $J$2 , ИСТИНА)
  • G2 : =ABS( F2 – D2 )
  • J1 : =СРЕДНЕЕ( A2:A21 )
  • J2 : =СТАНДОТКЛОН.С( A2:A21 )
  • J4 : =МАКС( G2:G21 )

Шаг 3: интерпретируйте результаты

В тесте Колмогорова-Смирнова используются следующие нулевая и альтернативная гипотезы:

  • H 0 : Данные нормально распределены.
  • H A : Данные не распределены нормально.

Чтобы определить, должны ли мы отклонить или не отклонить нулевую гипотезу, мы должны обратиться к максимальному значению на выходе, которое оказывается равным 0,10983 .

Это представляет собой максимальную абсолютную разницу между фактическими значениями нашей выборки и ожидаемыми значениями нормального распределения.

Чтобы определить, является ли это максимальное значение статистически значимым, мы должны обратиться к таблице критических значений Колмогорова-Смирнова и найти число, равное n = 20 и α = 0,05.

Критическое значение оказывается равным 0,190 .

Поскольку наше максимальное значение не превышает этого критического значения, мы не можем отвергнуть нулевую гипотезу.

Это означает, что мы можем предположить, что наши выборочные данные нормально распределены.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные статистические тесты в Excel:

Как выполнить корреляционный тест в Excel
Как выполнить тест Дарбина-Ватсона в Excel
Как выполнить тест Харке-Бера в Excel
Как выполнить тест Левена в Excel

Как выполнить тест Колмогорова-Смирнова в Python


Тест Колмогорова-Смирнова используется для проверки того, происходит ли выборка из определенного распределения.

Чтобы выполнить тест Колмогорова-Смирнова в Python, мы можем использовать scipy.stats.kstest() для теста с одной выборкой или scipy.stats.ks_2samp() для теста с двумя выборками.

В этом руководстве показан пример использования каждой функции на практике.

Пример 1: Одновыборочный критерий Колмогорова-Смирнова

Предположим, у нас есть следующие образцы данных:

from numpy.random import seed
from numpy.random import poisson
#set seed (e.g. make this example reproducible)
seed(0)
#generate dataset of 100 values that follow a Poisson distribution with mean=5
data = poisson(5, 100)

В следующем коде показано, как выполнить тест Колмогорова-Смирнова для этой выборки из 100 значений данных, чтобы определить, является ли она результатом нормального распределения:

from scipy.stats import kstest
#perform Kolmogorov-Smirnov test
kstest(data, 'norm')
KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)

Из вывода мы видим, что статистика теста равна 0,9072 , а соответствующее значение p равно 1,0908e-103.Поскольку p-значение меньше 0,05, мы отвергаем нулевую гипотезу. У нас есть достаточно доказательств, чтобы сказать, что данные выборки не имеют нормального распределения.

Этот результат также не должен вызывать удивления, поскольку мы сгенерировали выборочные данные с помощью функции poisson() , которая генерирует случайные значения, соответствующиераспределению Пуассона .

Пример 2. Двухвыборочный критерий Колмогорова-Смирнова

Предположим, у нас есть следующие два примера набора данных:

from numpy.random import seed
from numpy.random import randn
from numpy.random import lognormal
#set seed (e.g. make this example reproducible)
seed(0)
#generate two datasets
data1 = randn(100)
data2 = lognormal(3, 1, 100)

В следующем коде показано, как выполнить тест Колмогорова-Смирнова для этих двух образцов, чтобы определить, получены ли они из одного и того же дистрибутива:

from scipy.stats import ks_2samp
#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)
KstestResult(statistic=0. 99, pvalue=4.417521386399011e-57)

Из вывода мы видим, что статистика теста равна 0,99 , а соответствующее значение p равно 4,4175e-57.Поскольку p-значение меньше 0,05, мы отвергаем нулевую гипотезу. У нас есть достаточно доказательств, чтобы сказать, что два выборочных набора данных не происходят из одного и того же распределения.

Этот результат также не должен удивлять, поскольку мы сгенерировали значения для первой выборки, используя стандартное нормальное распределение, а значения для второй выборки, используя логарифмически нормальное распределение.

Дополнительные ресурсы

Как выполнить тест Шапиро-Уилка в Python
Как выполнить тест Андерсона-Дарлинга в Python

ТЕСТ КОЛМОГОРОВА–СМИРНОВА. Необходимый инструмент в вашей науке о данных… | by Marc-Olivier Arsenault

Необходимый инструмент в вашем наборе инструментов для обработки и анализа данных

В последнее время на работе нам приходилось проводить много неконтролируемой классификации. По сути, нам нужно было выделить N классов из выборки. У нас было приблизительное представление о том, сколько классов присутствует, но ни в чем нельзя было быть уверенным. Мы обнаружили, что тест Колмогорова-Смирнова является очень эффективным способом определить, существенно ли отличаются два образца друг от друга.

Я расскажу вам немного о тесте Колмогорова-Смирнова и расскажу об одной задаче, которую мы решили с его помощью.

Исходное сообщение на coffeeanddata.ca

Отклонение нулевой гипотезы. Звучит как болезненное воспоминание из университетского курса статистики, но на самом деле это именно то, что мы хотим сделать здесь. Мы хотим исключить возможность того, что два образца взяты из одного и того же дистрибутива. Давайте посмотрим на очень высокий уровень, не математический, обзор некоторых доступных тестов. Если вы хотите получить хорошее представление о математике, лежащей в основе всех этих тестов, воспользуйтесь ссылкой на Википедию, представленной во всех разделах.

T-ТЕСТ СТЬЮДЕНТА

T-тест Стьюдента, вероятно, является наиболее известным способом отклонения нулевой гипотезы. Этот тест вычисляет P-значение выборки по сравнению с нормальной популяцией или по сравнению с другой выборкой. Результат, P-значение, говорит вам, насколько вероятно, что эти выборки взяты из одного и того же распределения.

Полученное значение P можно сравнить со статистической значимостью порогового вызова (например, 0,05). Если значение P меньше, нулевые гипотезы можно отклонить.

Возникла проблема с Т-критерием Стьюдента, выборки должны быть нормальными (имеющими нормальное распределение). Для нас это проблема, потому что мы много работаем с распределениями Пуассона.

ТЕСТ КОЛМОГОРОВА-СМИРНОВА

Тест Колмогорова-Смирнова (тест КС) немного сложнее и позволяет обнаруживать закономерности, которые невозможно обнаружить с помощью Т-критерия Стьюдента.

Из Википедии:

«Статистика Колмогорова–Смирнова количественно определяет расстояние между эмпирической функцией распределения выборки и кумулятивной функции распределения эталонного распределения или между эмпирическими функциями распределения двух выборок».

Вот пример, который показывает разницу между T-тестом Стьюдента и тестом KS.

stackexchange.com

Поскольку среднее значение выборки и стандартное отклонение очень похожи, T-критерий Стьюдента дает очень высокое значение p. KS Test может обнаружить дисперсию. В этом случае красное распределение имеет слегка биномиальное распределение, которое обнаруживает КС. Другими словами:

  • Т-критерий Стьюдента говорит, что существует 79,3% шансов, что две выборки взяты из одного и того же распределения.
  • Тест KS говорит, что существует 1,6% вероятность того, что два образца взяты из одного и того же дистрибутива.

ДРУГИЕ ТЕСТЫ

Существует множество других тестов и алгоритмов для выполнения такой работы. Тест Шапиро-Уилка и тест Андерсона-Дарлинга — два теста, которые считаются более мощными, чем тест КС. У этих двух тестов есть существенный недостаток: они не позволяют сравнивать две выборки, они всегда сравнивают выборку со стандартным распределением.

Редактировать: Мой коллега показал мне, что Андерсон-Дарлинг можно также использовать для двустороннего тестирования (сравнение образцов).

«Тест K–S для двух выборок — один из наиболее полезных и общих непараметрических методов сравнения двух выборок» — Википедия.

Для этого конкретного задания нам нужно было определить, какой пользователь использует конкретное устройство. Каждое устройство использовалось одним или несколькими разными пользователями, и нам нужно было придумать метод, чтобы определить, был ли это один пользователь или несколько. В случае с несколькими пользователями мы хотели определить, какое использование было выполнено тем или иным пользователем.

НАША СТРАТЕГИЯ

Мы решили использовать сочетание графовой сети и теста KS для выявления потенциальных кластеров. Идея этой демонстрации состоит в том, чтобы представить графовую сеть, в которой каждый узел (выборка) был связан с каждым другим узлом (выборкой). Вершины или связь между этими узлами будут мне KS Test , другими словами, насколько близки эти два узла. Таким образом, два узла с низким P-значением KS будут близки, а два с высоким P-значением — далеко. Мы надеемся, что это создаст различимые кластеры.

НАБОР ДАННЫХ

Вот как выглядят наши данные:

Как видите, вся наша выборка выглядит как нормальное распределение с очень низким стандартным отклонением. Мы протестировали все 82 различных сеанса использования этого устройства.

Прямо из этой картинки видно, что есть разные узоры. Вся выборка не имеет одинакового распределения гистограмм. Это очень хорошее начало. После этого мы посмотрели на очевидный кластер распространения.

Для этого мы создали матрицу KS, которая состоит из двухстороннего теста KS для каждого распределения выборки по сравнению с любой другой выборкой. Быстрый просмотр тепловой карты матрицы KS не дает очевидных результатов (как вы можете видеть на рисунок справа от вас).

После такой иерархической кластеризации мы уже получили несколько лучших результатов. (Как вы можете видеть на следующем рисунке.)

На этих двух визуализациях дендрограмм мы можем видеть несколько потенциальных (3) кластеров. После просмотра эти кластеры снова оказались незначительными.

СЕТЕВОЙ ГРАФИК

После неудачной кластеризации дендрограммы мы попробовали предложенный графовый подход. Цель здесь, как объяснялось ранее, состоит в том, чтобы отобразить все возможные узлы и вершины. Длина вершин является тестовым значением KS. Пришлось убрать самореференцию (которая всегда была 0 (очевидно, вы совершенно похожи на себя)9.0005

Затем мы получили сетевой граф, в котором все были связаны со всеми остальными, что не особенно полезно.

Следующим шагом является сохранение только значимой ссылки (ниже определенного порога)

Как мы видим на этой картинке, мы получили очень впечатляющий результат. Мы можем ясно видеть два отдельных кластера и три выброса.

Это идеально подходит для нашей модели, большой кластер должен быть основным пользователем, а второй кластер может быть альтернативным пользователем.

После проверки правильности мы обнаружили, что кластер определил некоторую разницу между использованием кластеров 1 и 2, но не ту, которую мы искали. Другими словами, он не решил нашу проблему, но фактически нашел другой шаблон, который может быть полезен в другом контексте.

После этой работы мы пришли к выводу, что KS Test — это очень мощный способ автоматически различать образцы из разных дистрибутивов. Это не совсем решило нашу проблему, но показало, что его можно легко использовать в контексте науки о данных.

Сегодня я представил вам одну из задач, которые мы решили с помощью KS Test, но мы также использовали его для решения других задач. KS Test действительно становится хорошим тестом в нашем швейцарском ноже по науке о данных.

Следуйте за мной в моем блоге: coffeeanddata.ca

Тест Колмогорова-Смирнова.

Принципы

Цель

Эти тесты предоставляют средства для сравнения распределений, будь то два выборочных распределения или выборочное распределение с теоретическим распределением. Распределения сравниваются в их кумулятивной форме как эмпирические функции распределения. Тестовая статистика, разработанная Колмогоровым и Смирновым для сравнения распределений, представляла собой просто максимальное расстояние по вертикали между двумя функциями.

Критерии Колмогорова-Смирнова имеют то преимущество, что (а) распределение статистики не зависит от тестируемой кумулятивной функции распределения и (б) критерий точен. Недостаток их в том, что они более чувствительны к отклонениям вблизи центра распределения, чем в хвостах.

 

 

Одновыборочный критерий Колмогорова-Смирнова

Он также известен как критерий согласия Колмогорова-Смирнова. Он оценивает степень соответствия между наблюдаемым распределением и полностью заданным теоретическим непрерывным распределением. Он (разумно) чувствителен ко всем характеристикам распределения, включая местоположение, дисперсию и форму.

Ключевые допущения теста с одним образцом заключаются в том, что теоретическое распределение является непрерывным (хотя существует версия, которая может работать с дискретными распределениями) и что оно полностью определено. Последнее предположение, к сожалению, означает, что его наиболее распространенное использование — проверка нормальности — на самом деле является неправильным использованием, если параметры этого распределения оцениваются на основе данных.

Тестовая статистика d, наибольшее отклонение между наблюдаемой кумулятивной ступенчатой ​​функцией и ожидаемым теоретическим кумулятивным распределением частот:

Алгебраически говоря —

д    =     макс(абс[F 0 (Y)-S(Y)])

где
  • d — максимальное отклонение статистики Колмогорова,
  • F 0 (Y) — теоретическое кумулятивное распределение населения Y по H 0 ,
  • S(Y) — (наблюдаемое) кумулятивное распределение S обильное население Y , предполагая, что H nil является ИСТИННЫМ, иначе известным как ECDF (эмпирическая кумулятивная функция распределения).
Примечание:
  • Наиболее часто проверяемая статистика d = max(abs[F
    0
    (Y)-S(Y)]), но, в зависимости от альтернативной гипотезы, d + = max[F 0 (Y)- ТАКЖЕ используются S(Y)] или d = max[S(Y)-F 0 (Y)] (например, см. справку R). Все 3 статистики подлежат верхнему одностороннему тесту, но, хотя нулевые распределения d + и д одинаковые, д разные.
  • Кроме того, некоторые авторы используют D, а не d (в основном тексте мы используем d, здесь мы используем D & d).
    • Процедура
      1. Укажите теоретическую кумулятивную функцию, ожидаемую при нулевой гипотезе.
        Например: для нормального распределения укажите среднее значение и стандартное отклонение; для равномерного распределения укажите максимум и минимум.
      2. Рассчитайте наблюдаемые кумулятивные относительные частоты и (необязательно) постройте ступенчатую диаграмму.
        • Обратите внимание: эта инструкция имеет смысл только для очень маленьких образцов, когда компьютер недоступен.
        • В качестве альтернативы вычтите поправочный коэффициент 0,5/n из каждой наблюдаемой частоты, чтобы избежать необходимости проводить два измерения для каждой точки.
      3. Рассчитайте ожидаемые кумулятивные относительные частоты для диапазона значений в выборке и (необязательно) постройте кривую.
      4. Для каждого шага на ступенчатом графике вычтите ожидаемую кумулятивную относительную частоту (F i ) из наблюдаемой кумулятивной относительной частоты (S i ).
      5. Для каждого шага на ступенчатом графике вычтите предыдущую ожидаемую кумулятивную относительную частоту (F i-1 ) из наблюдаемой кумулятивной относительной частоты (S i ).
      6. Наибольшее из абсолютных значений этих разностей является тестовой статистикой (d).
        • Если из наблюдаемых кумулятивных относительных частот был вычтен поправочный коэффициент, добавьте этот коэффициент к наибольшему из абсолютных значений, чтобы получить d.
      7. Статистика теста относится к точным таблицам (например, Таблица E в Siegel (1956)) или к программному пакету.

      Предупреждение

      Некоторые авторы, например, Sokal & Rohlf (1995), используют «Колмогоров-Смирнов» для обозначения как (исходных) тестов Колмогорова-Смирнова, так и теста Лиллиефорса. Эта практика поддерживается некоторыми программными пакетами и может вызвать путаницу. Например, пакет SPSS использует критические значения Лиллиефорса, когда тест Колмогорова-Смирнова выполняется в их модуле «Исследование», но не когда он выполняется как непараметрический тест. Это приводит ко многим ошибочным анализам!

      SPSS также выводит другую тестовую статистику, а именно Z-статистику Колмогорова-Смирнова:

      Алгебраически говоря —

      K-S Z-статистика = d√n

      , где

      • n — количество наблюдений,
      • d — максимальное отклонение статистики Колмогорова = max(|F 0 (Y)-S(Y)|)

      Предположения
        Это одновыборочный критерий Колмогорова-Смирнова, а не Z-статистика K-S.
      • Образец является случайным образцом
      • Теоретическое распределение должно быть указано полностью. Критические значения, указанные в таблицах (и часто в пакетах программного обеспечения), предполагают, что это так. Если параметры оцениваются на основе данных, результат теста будет (намного) слишком консервативным. Если параметры оцениваются по выборке, вместо этого следует использовать критерий Лиллиефорса. Этот тест доступен в некоторых пакетах (например, StatXact, Systat) для ряда различных непрерывных распределений (нормальное, экспоненциальное и гамма).
      • Предполагается, что теоретическое распределение является непрерывным. Если оно дискретное (например, Пуассона), результат будет слишком консервативным, хотя Коновер (1999) предлагает эквивалентный подход для дискретных распределений для небольших выборок.
      • Предполагается, что выборочное распределение не имеет связей. Если есть связи (например, из-за округления или если рассматриваемая переменная дискретна), результат будет (намного) слишком либеральным, поскольку большие шаги дают чрезмерно большое d. Категоризированное распределение можно проверить с помощью Колмогорова-Смирнова, разделив наблюдаемые различия между кумулятивными распределениями на количество наблюдений в интервале классов (n). Но такой тест слишком консервативен, учитывая, что (а) распределение дискретно (см. выше) и (б) мощность уменьшена, потому что количество наблюдений уменьшено в n раз.

       

       

      Двухвыборочный критерий Колмогорова-Смирнова

      Двухвыборочный критерий Колмогорова-Смирнова оценивает, были ли взяты две независимые выборки из одной и той же совокупности (Y) или, что то же самое, из двух идентичных совокупностей (X = Y). Как и в случае одновыборочного теста, он умеренно чувствителен ко всем характеристикам распределения, включая местоположение, дисперсию и форму. Односторонняя версия этого теста имеет конкретную цель, а именно проверить, являются ли значения одной совокупности стохастически большими, чем значения другой совокупности.

      Как и в случае одновыборочного теста, сравниваются кумулятивные распределения, но здесь сравниваются два выборочных распределения, а не выборочное распределение и теоретическое распределение.

      Для двусторонней версии теста статистика теста (d) представляет собой наибольшее абсолютное отклонение между двумя наблюдаемыми кумулятивными ступенчатыми функциями, независимо от направления разницы.

      Алгебраически говоря —

      д    =     макс[абс{S 1 (Y)-S 2 (Y)}]

      где
      • d — максимальное отклонение статистики Колмогорова,
      • S 1 (Y) — наблюдаемое кумулятивное распределение образца 1,
      • S 2 (Y) — наблюдаемое кумулятивное распределение образца 2.

      Для односторонней версии теста статистика теста (d) представляет собой наибольшее отклонение между двумя наблюдаемыми кумулятивными ступенчатыми функциями в прогнозируемом направлении.

        Таким образом:
      • Если H a означает, что x > y, то проверить d + или max[S x -S y ]
      • Если H a означает, что y > x, то проверьте d или max[S y -S x ]

      Процедура
      1. Расположите каждый из двух наборов измерений в кумулятивном распределении относительной частоты, используя одинаковые интервалы для каждого распределения. Дополнительно постройте каждое распределение как пошаговый график.
      2. Для каждой точки наблюдения (каждый шаг на ступенчатом графике) определите разницу между двумя кумулятивными распределениями.
      3. Наибольшее из абсолютных значений этих разностей является тестовой статистикой (d). Для одностороннего теста d — это наибольшая разница в прогнозируемом направлении.
      4. Оценка значимости этой тестовой статистики зависит от размера выборки и характера H 1 :
        • Если n 1 = n 2 и (n 1 +n 2 =) N ≤40, точные таблицы доступны как для односторонних, так и для двусторонних тестов (например, Siegel (1956), таблица L).

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *