Как распаковать результаты от scipy ttest_1samp?

Ttest_1samp от Scipy возвращает кортеж со статистикой t и двусторонним p-значением.

Пример:

ttest_1samp([0,1,2], 0) = (array(1.7320508075688774), 0.22540333075851657)

Но меня интересует только значение t-критерия (t-статистика), которое я смог получить только с помощью [0].ravel()[0]

Пример:

ttest_1samp([0,1,2], 0)[0].ravel()[0] = 1.732

Тем не менее, я вполне уверен, что должен быть более питонический способ сделать это. Каков наилучший способ получить поплавок из этого вывода?

2 ответа

Чтобы разъяснить ответ @miradulo, если вы используете более новую версию scipy (версия 0.14.0 или более поздняя), вы можете ссылаться на statistic поле возвращенного namedtuple, Ссылка на этот способ является Pythonic и упрощает код, так как нет необходимости запоминать конкретные индексы.

Код res = ttest_1samp(range(3), 0) print(res.statistic) print(res.pvalue)

Выход 1.73205080757 0.225403330759

Из исходного кодаscipy.stats.ttest_1samp не возвращает ничего, кроме namedtupleTtest_1sampResult со статистикой и р-значением. Следовательно, вам не нужно использовать .ravel - вы можете просто использовать

scipy.stats.ttest_1samp([0,1,2], 0)[0]

получить доступ к статистике.


Примечание. Из дальнейшего изучения исходного кода становится ясно, что этот именованный кортеж начал возвращаться только в выпуске 0.14.0. В версии 0.13.0 и более ранних версиях кажется, что возвращается массив с нулевым диммером (исходный код), который для всех намерений и целей может действовать как простое число, как упомянуто BrenBarn.

Вы можете получить результаты в желаемых форматах следующим образом:

print ("The t-statistic is %.3f and the p-value is %.3f." % stats.ttest_1samp([0,1,2], 0))

Выход:

T-статистика равна 1.732, а p-значение равно 0.225.

Другие вопросы по тегам