python里怎么做单侧T检验?我在网上查到一个是这样的。
>>>s = [1,2,-1,2,1,-4]
>>>from scipy.stats import ttest_1samp
>>>ttest_1samp(s,0)
Ttest_1sampResult(statistic=0.1762268, pvalue=0.8670311)
上面这个代码得到的p-value是双侧T检验的。
怎么做单侧的呢?我就是单样本,零假设是均值大于0.
1个回答
python的ttest_1samp同时返回T-statistic和p value。利用T检验的对称性,我们可以把双侧假设检验结果转化为单侧的。
如果T-statistic > 0,单侧pvalue = 1 - 双侧pvalue/2
如果T-statistic < 0,单侧pvalue = 双侧pvalue/2
可以根据上面的等式,自己定义个函数
def ttest_onesided(s):
from spicy.stats import ttest_1samp
(t, p) = ttest_1samp(s, 0)
if t > 0:
onesided_p = 1 - p / 2
else:
onesided_p = p / 2
return onesided_p
补充一下,如果零假设是均值小于0,if else里面的条件要反一下。
-
高代兄
2017-03-09 23:55