Python成对样本t检验展示95%的置信区间

在R语言里可以很容易地使用

t.test(X1, X2,paired = T)

进行成对样本T检验,并且给出95%的置信区间,但是在Python里,我们只能很容易地找到成对样本T检验的P值,也就是使用scipy库,这里补充一点成对样本t检验的结果和直接检验两个样本的差值和0的区别是完全一样的

from scipy import stats
X1, X2 = np.array([1,2,3,4,5]), np.array([1.1,2,3,4,5])
stats.ttest_rel(X1,X2)
X3 = X1-X2
stats.ttest_1samp(X3,0)

但是这个方法并不会返回置信区间,因此我又找了Python里另一个统计库statsmodels

import statsmodels.stats.api as sms
X1, X2 = np.array([1,2,3,4,5]), np.array([1.1,2,3,4,5])
cm = sms.CompareMeans(sms.DescrStatsW(X1), sms.DescrStatsW(X2))
print(cm.tconfint_diff())
print(cm.ttest_ind())
X3 = X1-X2
sms.DescrStatsW(X3).tconfint_mean()

但是ttest_ind这个方法并不是成对样本的检验,而是独立样本检验,因此计算出来的值往往更加保守,不能准确反映两者的差异,但是statsmodels确实没有成对样本检验的函数,在别的论坛上大家说因为scipy有了这个函数,所以statsmodels就没写…感觉挺无语的,不过想到其实直接做单样本的t检验其实就ok了,所以直接做差后,用tconfint_mean这个方法就可以得到了,我在R语言里做出来的结果和Python中是一致的。不得不说statsmodels真的是Python统计之光。
#-------------210827----------------------
今天再次使用这个函数,发现了一个之前没有注意到的点,本来以为这个函数第一步会先将weights进行标准化,没想到函数里并不是这么做的,而是将weights直接相加,这样得到的数作为t检验时的自由度,大家在用的时候要谨慎给weights的值。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值