scipy.stats.

combine_pvalues#

scipy.stats.combine_pvalues(pvalues, метод='fisher', веса=None, *, ось=0, nan_policy='propagate', keepdims=False)[источник]#

Объединение p-значений из независимых тестов, относящихся к одной гипотезе.

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

Каждый метод предполагает, что при нулевой гипотезе p-значения независимо и равномерно выбираются из интервала [0, 1]. Вычисляется тестовая статистика (разная для каждого метода) и объединенное p-значение рассчитывается на основе распределения этой тестовой статистики при нулевой гипотезе.

Параметры:
pvaluesarray_like

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

метод{‘fisher’, ‘pearson’, ‘tippett’, ‘stouffer’, ‘mudholkar_george’}

Название метода для объединения p-значений.

Доступные методы (подробности см. в примечаниях):

  • ‘fisher’: метод Фишера (комбинированный вероятностный тест Фишера)

  • ‘pearson’: метод Пирсона

  • ‘mudholkar_george’: метод Мудхолкара и Джорджа

  • 'tippett': метод Титпетта

  • ‘stouffer’: метод Z-оценки Стоуффера

весаarray_like, необязательный

Необязательный массив весов, используемый только для метода Z-оценки Стоуффера. Игнорируется другими методами.

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

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

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

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

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

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

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

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

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

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

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

статистикаfloat

Статистика, рассчитанная указанным методом.

p-значениеfloat

Объединённое p-значение.

Примечания

Если эта функция применяется к тестам с дискретной статистикой, таким как любой ранговый тест или тест таблицы сопряженности, она будет систематически давать неверные результаты, например, метод Фишера будет систематически завышать p-значение [1]. Эта проблема становится менее серьёзной для больших размеров выборки, когда дискретные распределения становятся приблизительно непрерывными.

Различия между методами лучше всего иллюстрируются их статистиками и тем, какие аспекты комбинации p-значений они подчеркивают при рассмотрении значимости [2]. Например, методы, подчеркивающие большие p-значения, более чувствительны к сильным ложным и истинным отрицаниям; наоборот, методы, фокусирующиеся на малых p-значениях, чувствительны к положительным.

  • Статистика метода Фишера (также известного как комбинированный вероятностный тест Фишера) [3] является \(-2\sum_i \log(p_i)\), что эквивалентно (как статистика критерия) произведению индивидуальных p-значений: \(\prod_i p_i\). При нулевой гипотезе эта статистика следует \(\chi^2\) распределению. Этот метод подчеркивает малые p-значения.

  • Метод Пирсона использует \(-2\sum_i\log(1-p_i)\), что эквивалентно \(\prod_i \frac{1}{1-p_i}\) [2]. Таким образом, он подчеркивает большие p-значения.

  • Компромисс Мадхолкара и Джорджа между методами Фишера и Пирсона путем усреднения их статистик [4]. Их метод подчёркивает экстремальные p-значения, как близкие к 1, так и к 0.

  • Метод Стоуффера [5] использует Z-оценки и статистику: \(\sum_i \Phi^{-1} (p_i)\), где \(\Phi\) является CDF стандартного нормального распределения. Преимущество этого метода в том, что легко ввести веса, что может сделать метод Stouffer более мощным, чем метод Fisher, когда p-значения получены из исследований разного размера [6] [7].

  • Метод Типпета использует наименьшее p-значение в качестве статистики. (Учтите, что этот минимум не является объединённым p-значением.)

Метод Фишера может быть расширен для объединения p-значений из зависимых тестов [8]. Расширения, такие как метод Брауна и метод Коста, в настоящее время не реализованы.

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

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

combine_pvalues имеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окружения SCIPY_ARRAY_API=1 и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

⚠️ нет JIT

⚠️ нет JIT

Dask

⚠️ вычисляет граф

н/д

См. Поддержка стандарта array API для получения дополнительной информации.

Ссылки

[1]

Кинкейд, У. М., «Комбинация тестов, основанных на дискретных распределениях». Journal of the American Statistical Association 57, no. 297 (1962), 10-19.

[2] (1,2)

Херд, Н. и Рубин-Деланши, П. «Выбор между методами комбинирования p-значений». Biometrika 105.1 (2018): 239-246.

[4]

Джордж, Э. О., и Г. С. Мудхолкар. «О свертке логистических случайных величин.» Метрика 30.1 (1983): 1-13.

[6]

Уитлок, М. К. «Объединение вероятностей из независимых тестов: взвешенный Z-метод превосходит подход Фишера». Journal of Evolutionary Biology 18, № 5 (2005): 1368-1373.

[7]

Зайкин, Дмитрий В. "Оптимально взвешенный Z-тест — мощный метод для объединения вероятностей в метаанализе." Журнал Evolutionary Biology 24, № 8 (2011): 1836-1841.

Примеры

Предположим, мы хотим объединить p-значения из четырех независимых тестов одной и той же нулевой гипотезы, используя метод Фишера (по умолчанию).

>>> from scipy.stats import combine_pvalues
>>> pvalues = [0.1, 0.05, 0.02, 0.3]
>>> combine_pvalues(pvalues)
SignificanceResult(statistic=20.828626352604235, pvalue=0.007616871850449092)

Когда отдельные p-значения имеют разный вес, рассмотрите метод Стоуффера.

>>> weights = [1, 2, 3, 4]
>>> res = combine_pvalues(pvalues, method='stouffer', weights=weights)
>>> res.pvalue
0.009578891494533616