Python统计学:配对样本t检验~均值差的检验

配对样本 t检验 用于两个不同条件下,对同一对象进行测量所得的两个样本均值的区别。

比如吃药前和吃药后体温是否有变化,大鱼钩和小鱼钩钓的鱼的体长是否有差异等。


配对样本是什么?

配对样本需要满足两个基本条件:

1. 样本间存在某种相关性或相互依赖关系,或者同一对象;

2. 配对样本间的差异是变量,变量的选择取决于研究目的。

比如要研究不同药物对高血压的影响,那么需要将参与者分为两组,一组接受药物A,一组接受药物B。

但是如果两组参与者的年龄、性别、体重等因素存在很大差异,那么就很难判断药物A和药物B的差异是否真正反映出各自的治疗效果。

为了解决这个问题,可以把每一位年龄相近、性别相同、体重相近的参与者都被配对在一起,然后再将每一对参与者分别随机分配到药物A组和药物B组,这样就可以消除年龄、性别、体重等因素对结果的影响。


我们举的这个例子则比较简单,检验吃药前后体温是否有差异,也即检验同一对象前后的变化。

提出假设

原假设:体温差为0,吃药前后的体温没有差异

备择假设:体温差不为0,吃药前后的体温有差异


导入数据:

data = {'person':['A','B','C','D','E','A','B','C','D','E'],
'medicine'['before','before','before','before','before','after','after','after','after','after'],
'body_temperature':[36.2,36.2,35.3,36.1,36.1,36.8,36.1,36.8,37.1,36.9]}
# 转为DataFrame格式
paired_test_data = pd.DataFrame(data,columns=['person','medicine','body_temperature'])
print(paired_test_data)


计算差值:

# 服药前后的样本均值
before = paired_test_data.query('medicine == "before"')["body_temperature"]
after = paired_test_data.query('medicine == "after"')["body_temperature"]

# 转化为数组型
before = np.array(before)
after = np.array(after)

# 计算差值
diff = after - before
diff

代码详解:

query()用于从DataFrame中选择符合特定条件的行。

query()[]结合起来表示从DataFrame中选择符合特定条件的行,并提取指定列的数据。中括号内是列名。

np.array()把数据转为数组格式。


计算t值和p值:

stats.ttest_1samp(diff, 0)

代码详解:

ttest_1samp()用于检验样本的均值是否与给定的值相同。

diff是我们计算好的两组样本均值的差值,0表示检验差值的均值是否等于0。

statistic=2.90169是方差, pvalue=0.044043是p值。

最后计算的p值为0.04,小于0.05,则认为吃药前后的体温有显著性变化。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值