scipy.stats.

mood#

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

Выполнить тест Муда на равенство параметров масштаба.

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

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

Массивы выборочных данных. Всего должно быть не менее трёх наблюдений.

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

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

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

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

  • ‘two-sided’: масштабы распределений, лежащих в основе x и y различаются.

  • 'less': масштаб распределения, лежащего в основе x меньше, чем масштаб распределения, лежащего в основе y.

  • ‘greater’: масштаб распределения, лежащего в основе x больше чем масштаб распределения, лежащего в основе y.

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

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

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

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

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

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

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

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

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

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

статистикаскаляр или ndarray

Z-оценка для проверки гипотезы. Для одномерных входных данных возвращается скаляр.

p-значениескалярный ndarray

P-значение для проверки гипотезы.

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

fligner

Непараметрический тест на равенство k дисперсий

ansari

Непараметрический тест на равенство 2 дисперсий

bartlett

Параметрический тест на равенство k дисперсий в нормальных выборках

levene

Параметрический тест на равенство k дисперсий

Примечания

Предполагается, что данные взяты из вероятностных распределений f(x) и f(x/s) / s соответственно, для некоторой функции плотности вероятности f. Нулевая гипотеза состоит в том, что s == 1.

Для многомерных массивов, если входы имеют формы (n0, n1, n2, n3) и (n0, m1, n2, n3), тогда если axis=1, результирующие значения z и p будут иметь форму (n0, n2, n3). Обратите внимание, что n1 и m1 не обязательно должны быть равны, но другие размерности должны.

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

Ссылки

[1] Mielke, Paul W. "Note on Some Squared Rank Tests with Existing Ties."

Technometrics, vol. 9, no. 2, 1967, pp. 312-14. JSTOR, https://doi.org/10.2307/1266427. Доступ 18 мая 2022 г.

Примеры

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> x2 = rng.standard_normal((2, 45, 6, 7))
>>> x1 = rng.standard_normal((2, 30, 6, 7))
>>> res = stats.mood(x1, x2, axis=1)
>>> res.pvalue.shape
(2, 6, 7)

Найдите количество точек, где разница в масштабе не значима:

>>> (res.pvalue > 0.1).sum()
78

Выполнить тест с различными масштабами:

>>> x1 = rng.standard_normal((2, 30))
>>> x2 = rng.standard_normal((2, 35)) * 10.0
>>> stats.mood(x1, x2, axis=1)
SignificanceResult(statistic=array([-5.76174136, -6.12650783]),
                   pvalue=array([8.32505043e-09, 8.98287869e-10]))