Я делаю воксельные сравнения между двумя группами (мужчинами и женщинами), используя несколько 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
---------------------------------------