单面一个样本T测试Python

时间:2017-07-06 11:08:16

标签: python scipy statistics

在Python中,我使用SciPy进行单样本t检验:

from scipy import stats

one_sample_data = [177.3, 182.7, 169.6, 176.3, 180.3, 179.4, 178.5, 177.2, 181.8, 176.5]

one_sample = stats.ttest_1samp(one_sample_data, 175.3)

这是双尾测试,但我无法在scipy.stats.ttest_1samp中看到进行单尾测试的选项。

在R中如果我使用t.test(),我只需设置alternative="less"(或"更大")。在Python中最简单的方法是什么?

1 个答案:

答案 0 :(得分:2)

根据评论中提供的链接,我将执行以下操作:

from scipy import stats
def one_sample_one_tailed(sample_data, popmean, alpha=0.05, alternative='greater'):
    t, p = stats.ttest_1samp(sample_data, popmean)
    print ('t:',t)
    print ('p:',p)
    if alternative == 'greater' and (p/2 < alpha) and t > 0:
        print ('Reject Null Hypothesis for greater-than test')
    if alternative == 'less' and (p/2 < alpha) and t < 0:
        print ('Reject Null Hypothesis for less-thane test')
sample_data = [177.3, 182.7, 169.6, 176.3, 180.3, 179.4, 178.5, 177.2, 181.8, 176.5]        
one_sample_one_tailed(sample_data,175.3)  

这给出了输出:

t: 2.295568968083183
p: 0.04734137339747034
Reject Null Hypothesis for greater-than test

此解决方案基于链接中可接受的答案:

接着说scipy总是将测试统计量表示为 签。这意味着从两尾检验得出的p和t值, 当p / 2 <时,您将拒绝大于检验的零假设。 alpha和t> 0,并且当p / 2