简体   繁体   English

Python 中 t 检验的置信区间(均值之差)

[英]Confidence Interval for t-test (difference between means) in Python

I am looking for a quick way to get the t-test confidence interval in Python for the difference between means.我正在寻找一种快速方法来获取 Python 中的 t 检验置信区间,以了解均值之间的差异。 Similar to this in R:在 R 中与此类似:

X1 <- rnorm(n = 10, mean = 50, sd = 10)
X2 <- rnorm(n = 200, mean = 35, sd = 14)
# the scenario is similar to my data

t_res <- t.test(X1, X2, alternative = 'two.sided', var.equal = FALSE)    
t_res

Out:出去:

    Welch Two Sample t-test

data:  X1 and X2
t = 1.6585, df = 10.036, p-value = 0.1281
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.539749 17.355816
sample estimates:
mean of x mean of y 
 43.20514  35.79711 

Next:下一个:

>> print(c(t_res$conf.int[1], t_res$conf.int[2]))
[1] -2.539749 17.355816

I am not really finding anything similar in either statsmodels or scipy, which is strange, considering the importance of significance intervals in hypothesis testing (and how much criticism the practice of reporting only the p-values recently got).我在 statsmodels 或 scipy 中都没有发现任何类似的东西,这很奇怪,考虑到假设检验中显着性区间的重要性(以及最近只报告 p 值的做法受到了多少批评)。

Here how to use StatsModels' CompareMeans to calculate the confidence interval for the difference between means: 这里如何使用StatsModels的CompareMeans计算置信区间的差异意味着:

import numpy as np, statsmodels.stats.api as sms

X1, X2 = np.arange(10,21), np.arange(20,26.5,.5)

cm = sms.CompareMeans(sms.DescrStatsW(X1), sms.DescrStatsW(X2))
print cm.tconfint_diff(usevar='unequal')

Output is 输出是

(-10.414599391793885, -5.5854006082061138)

and matches R: 并匹配R:

> X1 <- seq(10,20)
> X2 <- seq(20,26,.5)
> t.test(X1, X2)

    Welch Two Sample t-test

data:  X1 and X2
t = -7.0391, df = 15.58, p-value = 3.247e-06
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -10.414599  -5.585401
sample estimates:
mean of x mean of y 
       15        23 

An alternate answer using pingouin (basically copied code from here and adapted to use Ulrich Stern 's variables)使用pingouin的替代答案(基本上从这里复制代码并适应使用Ulrich Stern的变量)

import pingouin as pg
x1, x2 = np.arange(10,21), np.arange(20,26.5,.5)
res = pg.ttest(x1, x2, paired=False)
print(res)

prints印刷

            T    dof       tail     p-val            CI95%  cohen-d       BF10  power
T-test -7.039  15.58  two-sided  0.000003  [-10.41, -5.59]    3.009  2.251e+04    1.0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM