Объединение значений p с использованием scipy - PullRequest
2 голосов
/ 29 мая 2020

Мне нужно объединить значения p и получить одно значение p. Я использую функцию scipy.stats.combine_pvalues, но она дает очень маленькое комбинированное значение p, это нормально? меньше любого заданного значения p в p_values_list ? Как это может быть?

Заранее спасибо, Burcak

Ответы [ 2 ]

2 голосов
/ 30 мая 2020

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

Мы можем смоделировать это, вытянув из случайного равномерного распределения 1000 раз длину ваших p-значений:

import numpy as np
from scipy.stats import combine_pvalues
from matplotlib import pyplot as plt

random_p = np.random.uniform(0,1,(1000,len(p_values_list)))
res = np.array([combine_pvalues(i,method='fisher',weights=None) for i in random_p])
plt.hist(fisher_p)

enter image description here

Судя по вашим результатам, хи-квадрат равен 62,456, что действительно огромно и не находится рядом с смоделированным хи-квадрат выше.

Следует отметить, что комбинирование вы сделали здесь, не учитывает направленность, если это возможно в вашем тесте, вы можете рассмотреть возможность использования Z Stouffer вместе с весами. Еще один разумный способ проверки - запустить моделирование, подобное приведенному выше, чтобы сгенерировать список p-значений при нулевой гипотезе и посмотреть, как они отличаются от того, что вы наблюдали.

Интересная статья, но, возможно, немного статистическая

1 голос
/ 29 мая 2020

Я ни в коем случае не специалист в этой области, но интересуюсь вашим вопросом. После некоторого чтения wiki мне кажется, что combined_p_value сообщает вам вероятность того, что все p-значения в списке были получены при той же нулевой гипотезе. Что очень маловероятно, учитывая два крайне малых значения. В вашем наборе есть два очень маленьких значения: 1-е и 3-е. Если описанный мною мыслительный процесс верен, удаление любого из них должно дать гораздо более высокое значение p-value, что действительно так:
удалить 1-е: p-значение 0.00010569305282803985
удалить 3-е: p-значение of 2.4713196031837724e-05
В заключение, я думаю, что это правильный способ интерпретации метаанализа, который на самом деле описывает combine_pvalues.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...