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подходящей формы вместо 2Dnp.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