Различные результаты при использовании scipy.stats.ttest_ind для целых массивов и для двух векторов - PullRequest
0 голосов
/ 13 июня 2019

Я делаю воксельные сравнения между двумя группами (мужчинами и женщинами), используя несколько t-тестов. Для этого я использую scipy.stats.ttest_ind. У меня 541443 вокселей в качестве зависимых переменных, по которым я хочу выполнить независимые t-тесты. Кажется, все работает нормально, однако, когда я проверяю результаты и выполняю одиночные t-тесты на случайно выбранных вокселях, я получаю разные результаты для них.

Вот мой код:

statistics,p_values = ttest_ind(male_data,female_data)

производит: массив ([- 5.23764997e-16, -1.59544316e-15, 7.88216339e-16, ..., 1.11783465e-15, -2.22874323e-16, -9.35188323e-16]) для значений t

single_stat,single_p_value = ttest_ind(female_data[:,0],male_data[:,0])

производит: -4.3805762173832176e-16 как t-значение

Я ожидаю, что результаты первого t-теста будут равны (поэтому либо ~ -5.237, либо ~ -4.380). Кто-нибудь знает, что здесь могло пойти не так?

Я также опробовал третий метод, который выполняет несколько t-тестов с использованием цикла for. По-видимому, существует последовательный эффект, что результат метода for-loop всегда совпадает с выводом для метода одиночного t-теста (что имеет смысл, потому что он в основном делает несколько одиночных ttest_ind и затем добавляет вывод каждого t-критерия в список). Однако оба результата отличаются от вывода ttest_ind для всего массива . Я также разрезал данные до разных размеров, как это было предложено в комментариях, и обнаружил парадоксальный эффект, что результаты трех методов (или двух, потому что цикл for и один t-критерий кажутся всегда одинаковыми) становятся более более похожи, но возвращаемые t-значения и p-значения становятся невероятно маленькими или большими. Кроме того, Spyder падает, когда я хочу щелкнуть на выводе ttest_ind для всего массива в последнем случае (n = 5).

n_rows = 150
Output from for-loop method (first t-value in the list):
t-value: -0.050583527798906465
p-value: 0.9596912767683707

Output from the t-test performed on only the first column:
t-value: -0.050583527798906465
p-value: 0.9596912767683707

Output from the t-test performed on the whole array (first t-value):
t-value: -0.050583527798907256
p-value: 0.9596912767683701

---------------------------------------
n_rows = 75
Output from for-loop method (first t-value in the list):
t-value: 0.9760289069224989
p-value: 0.33064277748038773

Output from the t-test performed on only the first column:
t-value: 0.9760289069224989
p-value: 0.33064277748038773

Output from the t-test performed on the whole array (first t-value):
t-value: 0.9760289069224984
p-value: 0.33064277748038795

---------------------------------------
n_rows = 5
Output from for-loop method (first t-value in the list):
t-value: 6111430044112607.0
p-value: 5.755396703077005e-124

Output from the t-test performed on only the first column:
t-value: 6111430044112607.0
p-value: 5.755396703077005e-124

Output from the t-test performed on the whole array (first t-value):
t-value: 6111430044112607.0
p-value: 5.755396703077005e-124

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