scipy.stats.

kendalltau#

scipy.stats.kendalltau(x, y, *, nan_policy='propagate', метод='auto', вариант='b', альтернатива='two-sided', ось=None, keepdims=False)[источник]#

Вычислите тау Кендалла, меру корреляции для порядковых данных.

Тау Кендалла — это мера соответствия между двумя ранжировками. Значения, близкие к 1, указывают на сильное согласие, а значения, близкие к -1, указывают на сильное расхождение. Реализованы два варианта тау Кендалла: tau-b (по умолчанию) и tau-c (также известный как тау-c Стюарта). Они отличаются только тем, как они нормализованы для попадания в диапазон от -1 до 1; проверки гипотез (их p-значения) идентичны. Исходный тау-a Кендалла не реализован отдельно, потому что и tau-b, и tau-c сводятся к tau-a при отсутствии связей.

Параметры:
x, yarray_like

Arrays of rankings, of the same shape. If arrays are not 1-D, they will be flattened to 1-D.

nan_policy{‘propagate’, ‘omit’, ‘raise’}

Определяет, как обрабатывать входные значения NaN.

  • propagate: если NaN присутствует в срезе оси (например, строке), вдоль которой вычисляется статистика, соответствующая запись вывода будет NaN.

  • omit: NaN будут пропущены при выполнении расчета. Если в срезе оси, вдоль которого вычисляется статистика, остается недостаточно данных, соответствующая запись вывода будет NaN.

  • raise: если присутствует NaN, то ValueError будет вызвано исключение.

метод{‘auto’, ‘asymptotic’, ‘exact’}, опционально

Определяет, какой метод используется для вычисления p-значения [5]. Доступны следующие опции (по умолчанию 'auto'):

  • ‘auto’: выбирает подходящий метод на основе компромисса между скоростью и точностью

  • ‘asymptotic’: использует нормальную аппроксимацию, подходящую для больших выборок

  • 'exact': вычисляет точное p-значение, но может использоваться только при отсутствии связей. С увеличением размера выборки время вычисления 'exact' может расти, а результат может терять точность.

вариант{‘b’, ‘c’}, optional

Определяет, какой вариант тау Кендалла возвращается. По умолчанию 'b'.

альтернатива{‘two-sided’, ‘less’, ‘greater’}, необязательный

Определяет альтернативную гипотезу. По умолчанию 'two-sided'. Доступны следующие опции:

  • 'two-sided': ранговая корреляция ненулевая

  • ‘less’: ранговая корреляция отрицательна (меньше нуля)

  • ‘greater’: ранговая корреляция положительна (больше нуля)

осьint или None, по умолчанию: None

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

keepdimsbool, по умолчанию: False

Если установлено значение True, оси, которые были сокращены, остаются в результате как размерности с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.

Возвращает:
resSignificanceResult

Объект, содержащий атрибуты:

статистикаfloat

Статистика тау.

p-значениеfloat

p-значение для проверки гипотезы, нулевая гипотеза которой — отсутствие связи, tau = 0.

Вызывает:
ValueError

Если nan_policy это 'omit' и вариант не является 'b' или если метод равно 'exact' и есть связи между x и y.

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

spearmanr

Вычисляет коэффициент корреляции Спирмена.

theilslopes

Вычисляет оценку Тейла-Сена для набора точек (x, y).

weightedtau

Вычисляет взвешенную версию тау Кендалла.

Тест тау Кендалла

Расширенный пример

Примечания

Используемое определение тау Кендалла [2]:

tau_b = (P - Q) / sqrt((P + Q + T) * (P + Q + U))

tau_c = 2 (P - Q) / (n**2 * (m - 1) / m)

где P - количество согласованных пар, Q - количество несогласованных пар, T - количество связанных пар только в x, и U — количество связанных пар только в y. Если ничья возникает для одной и той же пары в обоих x и y, он не добавляется ни в T, ни в U. n - общее количество выборок, а m - количество уникальных значений в любом из x или y, в зависимости от того, что меньше.

Начиная с SciPy 1.9, np.matrix входные данные (не рекомендуется для нового кода) преобразуются в np.ndarray перед выполнением вычисления. В этом случае результатом будет скаляр или np.ndarray подходящей формы вместо 2D np.matrix. Аналогично, хотя маскированные элементы маскированных массивов игнорируются, результатом будет скаляр или np.ndarray вместо маскированного массива с mask=False.

Ссылки

[1]

Морис Г. Кендалл, «Новая мера ранговой корреляции», Biometrika, том 30, № 1/2, стр. 81-93, 1938.

[2]

Морис Г. Кендалл, «Обработка связей в задачах ранжирования», Biometrika Vol. 33, No. 3, pp. 239-251. 1945.

[3]

Готтфрид Э. Ноэтер, “Элементы непараметрической статистики”, John Wiley & Sons, 1967.

[4]

Peter M. Fenwick, “A new data structure for cumulative frequency tables”, Software: Practice and Experience, Vol. 24, No. 3, pp. 327-336, 1994.

[5]

Maurice G. Kendall, «Rank Correlation Methods» (4-е издание), Charles Griffin & Co., 1970.

Примеры

>>> from scipy import stats
>>> x1 = [12, 2, 1, 12, 2]
>>> x2 = [1, 4, 7, 1, 0]
>>> res = stats.kendalltau(x1, x2)
>>> res.statistic
-0.47140452079103173
>>> res.pvalue
0.2827454599327748

Для более подробного примера см. Тест тау Кендалла.