Scipy的ttest_1samp返回一个元组,带有t统计量和双尾p值。
示例:的
ttest_1samp([0,1,2], 0) = (array(1.7320508075688774), 0.22540333075851657)
但我只对t-test(t-statistic)的浮动感兴趣,我只能通过使用[0].ravel()[0]
来获得
示例:
ttest_1samp([0,1,2], 0)[0].ravel()[0] = 1.732
但是,我非常肯定必须有更多的pythonic方式来做到这一点。 从此输出中获取浮动的最佳方法是什么?
答案 0 :(得分:2)
从the source code开始,scipy.stats.ttest_1samp
只会返回带有统计值和p值的namedtuple
Ttest_1sampResult
。因此,您不需要使用.ravel
- 您只需使用
scipy.stats.ttest_1samp([0,1,2], 0)[0]
访问统计信息。
注意:强> 从进一步查看源代码,很明显这个命名元组只在0.14.0版本中开始返回。在0.13.0及更早版本中,似乎a zero dim array is returned(源代码),对于所有意图和目的而言,其行为就像BrenBarn所提到的普通数字一样。
答案 1 :(得分:2)
要详细说明@miradulo的答案,如果您使用较新版本的scipy
(0.14.0或更高版本),则可以引用返回的namedtuple
的statistic
字段。这种引用是Pythonic的,并且因为不需要记住特定的索引而简化了代码。
代码
res = ttest_1samp(range(3), 0)
print(res.statistic)
print(res.pvalue)
输出
1.73205080757
0.225403330759
答案 2 :(得分:0)
您可以通过以下方式获得所需格式的结果:
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。