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"tomedian_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-значение может быть чувствительным к выбору связи.