python统计分析——两样本t检验

参考资料:用python动手学统计学

1、导入库

# 导入库
# 用于数值计算的库
import numpy as np
import pandas as pd
import scipy as sp
from scipy import stats
# 用于绘图的库
from matplotlib import pyplot as plt
import seaborn as sns
sns.set()

2、准备数据

data=pd.DataFrame({
    'person':['A', 'B', 'C', 'D', 'E', 'A', 'B', 'C', 'D', 'E'],
    'medicine':['before', 'before', 'before', 'before', 'before', 'after', 'after', 'after', 'after', 'after'],
    'temp':[36.2, 36.2, 35.3, 36.1, 36.1, 36.8, 36.1, 36.8, 37.1, 36.9]
}
)
data

3、提出假设
零假设H0:服药前后体温不变

备择假设HA:服药前后体温有变化

4、配对数据t检验

4.1求出配对数据间的差值

# 方法1
before=data.query("medicine=='before'")['temp']
after=data.query("medicine=='after'")['temp']
# 转化为数组
before=np.array(before)
after=np.array(after)
# 计算差值
diff=after-before
diff
# 方法2
before=data.loc[data.medicine=='before']['temp']
after=data.loc[data.medicine=='after']['temp']
# 转化为数组
before=np.array(before)
after=np.array(after)
# 计算差值
diff=after-before
diff
# 方法3
data2=data.pivot_table(index='person',columns='medicine',values='temp')
diff=data2.after-data2.before
diff

4.2 进行t检验

方法一:函数scipy.stats.ttest_1samp()

相关参数设置参考:https://blog.csdn.net/maizeman126/article/details/135977775

stats.ttest_1samp(diff,0)

方法二:函数scipy.stats.ttest_rel()

stats.ttest_rel(after,before)

ttest_rel()函数的相关参数设置与ttest_1samp()函数基本一致。

这里对ttest_rel()函数alternative参数的设置进行介绍:

'two-sided':表示a,b两列数据的均值不同。

'less':表示前者的均值小于后者。

'greater':表示前者的均值大于后者。

5、结论

pvalue<0.05,可以认为服药前后体温有显著变化。

6、独立样本t检验

       原则上配对数据不适用于独立样本t检验,这里只是为了介绍独立样本t检验,将现有的data数据假设为独立样本数据。

       独立样本t检验分为等方差和异方差。在python中都是一个函数,只是在参数设置上不一样。函数为:scipy.stats.ttest_ind()。这里重点介绍:equal_var参数,用于设置等方差还是异方差,默认为True,即等方差;当设置为False时,则进行Welch's t-test。

       按照传统教材,独立样本t检验需要检查数据的同方差性,在根据情况进行相应的t检验。但《用python动手学统计学》作者认为忽略两个样本是否为同方差,直接以方差不同位置前提进行检验也无大碍;大家可以根据自身需求选择严谨的t检验步骤或粗放的t检验步骤。

stats.ttest_ind(after,before,equal_var=False)

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值