ClickHouse/docs/ru/sql-reference/aggregate-functions/reference/kolmogorovsmirnovtest.md
Nikita Mikhaylov da72eb630e Done
2023-04-27 18:14:46 +02:00

6.6 KiB
Raw Blame History

slug sidebar_position sidebar_label
/ru/sql-reference/aggregate-functions/reference/kolmogorovsmirnovtest 300 kolmogorovSmirnovTest

kolmogorovSmirnovTest

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

Синтаксис

kolmogorovSmirnovTest([alternative, computation_method])(sample_data, sample_index)

Значения выборок берутся из столбца sample_data. Если sample_index равно 0, то значение из этой строки принадлежит первой выборке. Во всех остальных случаях значение принадлежит второй выборке. Выборки должны принадлежать непрерывным одномерным распределениям.

Аргументы

  • sample_data — данные выборок. Integer, Float or Decimal.
  • sample_index — индексы выборок. Integer.

Параметры

  • alternative — альтернативная гипотеза (Необязательный параметр, по умолчанию: 'two-sided'.) String. Пусть F(x) и G(x) - функции распределения первой и второй выборки соотвественно.
    • 'two-sided' Нулевая гипотеза состоит в том, что выборки происходит из одного и того же распределение, то есть F(x) = G(x) для любого x. Альтернатива - выборки принадлежат разным распределениям.
    • 'greater' Нулевая гипотеза состоит в том, что элементы первой выборки в асимптотически почти наверное меньше элементов из второй выборки, то есть функция распределения первой выборки лежит выше и соотвественно левее, чем функция распределения второй выборки. Таким образом это означает, что F(x) >= G(x) for любого x, а альтернатива в этом случае состоит в том, что F(x) < G(x) хотя бы для одного x.
    • 'less'. Нулевая гипотеза состоит в том, что элементы первой выборки в асимптотически почти наверное больше элементов из второй выборки, то есть функция распределения первой выборки лежит ниже и соотвественно правее, чем функция распределения второй выборки. Таким образом это означает, что F(x) <= G(x) for любого x, а альтернатива в этом случае состоит в том, что F(x) > G(x) хотя бы для одного x.
  • computation_method — метод, используемый для вычисления p-value. (Необязательный параметр, по умолчанию: 'auto'.) String.
    • 'exact' - вычисление производится с помощью вычисления точного распределения статистики. Требует большого количества вычислительных ресурсов и расточительно для больших выборок.
    • 'asymp'('asymptotic') - используется приближенное вычисление. Для больших выборок приближенный результат и точный почти идентичны.
    • 'auto' - значение вычисляется точно (с помощью метода 'exact'), если максимальный размер двух выборок не превышает 10'000.

Возвращаемые значения

Кортеж с двумя элементами:

  • вычисленное статистики. Float64.
  • вычисленное p-value. Float64.

Пример

Запрос:

SELECT kolmogorovSmirnovTest('less', 'exact')(value, num)
FROM
(
    SELECT
        randNormal(0, 10) AS value,
        0 AS num
    FROM numbers(10000)
    UNION ALL
    SELECT
        randNormal(0, 10) AS value,
        1 AS num
    FROM numbers(10000)
)

Результат:

┌─kolmogorovSmirnovTest('less', 'exact')(value, num)─┐
│ (0.009899999999999996,0.37528595205132287)         │
└────────────────────────────────────────────────────┘

Заметки: P-value больше чем 0.05 (для уровня значимости 95%), то есть нулевая гипотеза не отвергается.

Запрос:

SELECT kolmogorovSmirnovTest('two-sided', 'exact')(value, num)
FROM
(
    SELECT
        randStudentT(10) AS value,
        0 AS num
    FROM numbers(100)
    UNION ALL
    SELECT
        randNormal(0, 10) AS value,
        1 AS num
    FROM numbers(100)
)

Результат:

┌─kolmogorovSmirnovTest('two-sided', 'exact')(value, num)─┐
│ (0.4100000000000002,6.61735760482795e-8)                │
└─────────────────────────────────────────────────────────┘

Заметки: P-value меньше чем 0.05 (для уровня значимости 95%), то есть нулевая гипотеза отвергается.

Смотрите также