scipy.stats.

median_test#

scipy.stats.median_test(*образцы, связи='ниже', коррекция=True, lambda_=1, nan_policy='propagate')[источник]#

Выполнить медианный тест Муда.

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

Пусть n = len(samples) будет количеством выборок. Вычисляется "главная медиана" всех данных, и формируется таблица сопряжённости путём классификации значений в каждой выборке как выше или ниже главной медианы. Таблица сопряжённости, вместе с коррекция и lambda_, передаются в scipy.stats.chi2_contingency для вычисления тестовой статистики и p-значения.

Параметры:
sample1, sample2, …array_like

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

связиstr, optional

Определяет, как значения, равные общему медиану, классифицируются в таблице сопряженности. Строка должна быть одной из:

"below":
    Values equal to the grand median are counted as "below".
"above":
    Values equal to the grand median are counted as "above".
"ignore":
    Values equal to the grand median are not counted.

По умолчанию "ниже".

коррекцияbool, необязательно

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

lambda_float или str, опционально

По умолчанию статистика, вычисляемая в этом тесте, является статистикой хи-квадрат Пирсона. lambda_ позволяет использовать статистику из семейства расхождения мощности Кресси-Рида. См. power_divergence для подробностей. По умолчанию 1 (статистика хи-квадрат Пирсона).

nan_policy{'propagate', 'raise', 'omit'}, опционально

Определяет, как обрабатывать входные данные, содержащие nan. 'propagate' возвращает nan, 'raise' вызывает ошибку, 'omit' выполняет вычисления, игнорируя значения nan. По умолчанию 'propagate'.

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

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

статистикаfloat

Тестовая статистика. Возвращаемая статистика определяется lambda_. По умолчанию используется статистика хи-квадрат Пирсона.

p-значениеfloat

P-значение теста.

медианаfloat

Общая медиана.

таблицаndarray

Таблица сопряжённости. Форма таблицы (2, n), где n — количество образцов. Первая строка содержит количество значений выше общего медианы, вторая строка — количество значений ниже общего медианы. Таблица позволяет проводить дальнейший анализ с помощью, например, scipy.stats.chi2_contingency, или с scipy.stats.fisher_exact если есть два образца, без необходимости пересчитывать таблицу. Если nan_policy равно "propagate" и в входных данных есть nan, возвращаемое значение для table является None.

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

kruskal

Вычислить H-критерий Краскела-Уоллиса для независимых выборок.

mannwhitneyu

Вычисляет ранговый критерий Манна-Уитни для выборок x и y.

Примечания

Добавлено в версии 0.15.0.

Ссылки

[1]

Mood, A. M., Introduction to the Theory of Statistics. McGraw-Hill (1950), pp. 394-399.

[2]

Зар, Дж. Х., Биостатистический анализ, 5-е изд. Prentice Hall (2010). См. разделы 8.12 и 10.15.

Примеры

Биолог проводит эксперимент, в котором есть три группы растений. Группа 1 содержит 16 растений, группа 2 — 15 растений, а группа 3 — 17 растений. Каждое растение производит определенное количество семян. Количество семян для каждой группы:

Group 1: 10 14 14 18 20 22 24 25 31 31 32 39 43 43 48 49
Group 2: 28 30 31 33 34 35 36 40 44 55 57 61 91 92 99
Group 3:  0  3  9 22 23 25 25 33 34 34 40 45 46 48 62 67 84

Следующий код применяет медианный тест Муда к этим выборкам.

>>> g1 = [10, 14, 14, 18, 20, 22, 24, 25, 31, 31, 32, 39, 43, 43, 48, 49]
>>> g2 = [28, 30, 31, 33, 34, 35, 36, 40, 44, 55, 57, 61, 91, 92, 99]
>>> g3 = [0, 3, 9, 22, 23, 25, 25, 33, 34, 34, 40, 45, 46, 48, 62, 67, 84]
>>> from scipy.stats import median_test
>>> res = median_test(g1, g2, g3)

Медиана — это

>>> res.median
34.0

и таблица сопряженности

>>> res.table
array([[ 5, 10,  7],
       [11,  5, 10]])

p слишком велик, чтобы сделать вывод, что медианы не одинаковы:

>>> res.pvalue
0.12609082774093244

«G-тест» может быть выполнен путём передачи lambda_="log-likelihood" to median_test.

>>> res = median_test(g1, g2, g3, lambda_="log-likelihood")
>>> res.pvalue
0.12224779737117837

Медиана встречается несколько раз в данных, поэтому мы получим другой результат, если, например, ties="above" используется:

>>> res = median_test(g1, g2, g3, ties="above")
>>> res.pvalue
0.063873276069553273
>>> res.table
array([[ 5, 11,  9],
       [11,  4,  8]])

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