如何在Python中执行两个样本的单尾t检验

问题描述 投票:0回答:1

我想执行两个样本的单尾t检验以比较两个均值。对于我正在寻找的特定问题,我希望比较仅在一个方向上进行。我希望原假设为mu_2 > mu_1,替​​代假设为mu_1 <= mu_2。还是零假设仍然是mu_1 - mu_2 = 0,即使对于单尾情况也是如此?

我正在使用大型数据集,但是如果我要提取并舍入参数,则data_1为mu_1 = 4.3, s_1 = 4.8, and n_1 = 40000,data_2为mu_2 = 4.9, s_2 = 4.4, n_2 = 30000。我正在使用scipy进行两个样本的t检验:

stats.ttest_ind(data1,
                data2,
                equal_var = False)

鉴于scipy仅考虑了两尾测试,所以我不确定如何解释这些值。 Ttest_indResult(statistic=-19.51646312898464, pvalue=1.3452106729078845e-84)。 alpha值为0.05,而p值则比意味着零假设被拒绝的小得多。但是,我的直觉告诉我,不应该拒绝原假设,因为mu_2明显大于mu_1(至少我希望p值更大)。因此,我觉得我要么错误地解释了结果,要么需要进行额外的计算以获得正确的答案。

我将感谢您提供任何其他帮助和指导。谢谢!

python scipy statistics inference t-test
1个回答
0
投票

您是正确的,如果您要进行单面测试,则它应该具有较大的p值。 ttest_ind执行两侧检验,这使您有可能观察到比t统计量的绝对值更极端的东西。

要进行单面t检验,您可以使用cdf,它是直至t统计量的概率之和。

稍微修改this code

def welch_ttest(x1, x2,alternative):
    n1 = x1.size
    n2 = x2.size
    m1 = np.mean(x1)
    m2 = np.mean(x2)
    v1 = np.var(x1, ddof=1)
    v2 = np.var(x2, ddof=1)
    t = (m1 - m2) / np.sqrt(v1 / n1 + v2 / n2)
    df = (v1 / n1 + v2 / n2)**2 / (v1**2 / (n1**2 * (n1 - 1)) + v2**2 / (n2**2 * (n2 - 1)))
    if alternative == "equal":
        p = 2 * t.cdf(-abs(t), df)
    if alternative == "lesser":
        p = 1-t.cdf(abs(t), df)
    if alternative == "greater":
        p = t.cdf(abs(t), df)
    return t, df, p

我模拟一些数据:

import numpy as np
from scipy.stats import ttest_ind
from scipy.stats import t

np.random.seed(seed=123)
data1 = np.random.normal(4.3,4.8,size=40000)
np.random.seed(seed=123)
data2 = np.random.normal(4.9,4.4,size=30000)
ndf = len(data1) +len(data2) - 2
ttest_ind(data1,data2,equal_var = False)

Ttest_indResult(statistic=-16.945279258324227, pvalue=2.8364816571790452e-64)

您得到的结果类似,我们可以对上面的代码进行替代==“ equal”的测试,这是一个双向测试:

welch_ttest(data1,data2,"equal")

    (<scipy.stats._continuous_distns.t_gen at 0x12472b128>,
     67287.08544468222,
     2.8364816571790452e-64)

您可以使用与scipy 2面t检验相同的p值,现在我们进行您需要的单面检验:

welch_ttest(data1,data2,"greater")
(<scipy.stats._continuous_distns.t_gen at 0x12472b128>, 67287.08544468222, 1.0)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.