利用python库stats进行t检验
t检验通常分为三种,分别是单样本t检验、双样本t检验和配对样本t检验。本文基于python的scipy.stats函数对每种t检验进行了介绍和实验。
一、t检验介绍
无论哪种t检验,都有以下的基本前提条件:
- 样本数据符合正态分布
- 各个样本之间是独立的
步骤:
- 提出原假设和备择假设
- 构造t统计量
- 计算t统计量
- 对于得到的p值进行分析,p大于0.05则接受原假设,反之接受备择假设
二、 单样本t检验
应用场景:对某个样本的均值进行检验,比较是否和总体的均值(自己定)是否存在差异。
原假设和备择假设:

例如,我获取了50个中国人的身高(随机生成均值为1.5m的50个数据),想比较当前样本的平均身高和中国人的平均身高(1.7m)是否存在差异。按道理来说应该是存在差异的,因为一个是1.5,一个是1.7。
实现:使用ttest_1samp函数实现,第一个参数为样本数据,第二个参数为总体均值。代码如下:
from scipy.stats import ttest_1samp
from scipy import stats
rvs = stats.norm.rvs(loc=1.5, scale=1, size=(50)) #生成均值为1.5,标准差为1的样本
t, p = ttest_1samp(rvs, 1.7) #进行单样本t检验
最终得到:
out:t = -0.29277920321046647 p = 0.7709272063776454
p值大于0.05,说明我们不能拒绝原假设(即认为样本均值和总体均值没有显著差异),说明样本的身高均值可以认为是1.7m。之所以得到这样的结果可能由于我们的样本数目太少,还有就是生成的数据1.5和1.7过于的接近。所以我们再进行一组实验来说明,将随机数的均值改为2.5。
rvs = stats.norm.rvs(loc=2.5, scale=1, size=(50)) #生成均值为1.5,标准差为1的样本
t, p = ttest_1samp(rvs, 1.7) #进行单样本t检验,返回对应的t值和p值
得到:
out:t = 5.333243665065403 p = 2.4443516254546488e-06
此时p小于0.05,我们可以拒绝原假设(即认为样本均值和总体均值有显著差异),说明样本身高的均值不可以认为是1.7m。而且因为2.5是大于1.7的,最终得到的t也是一个正数。
三、独立样本t检验(双样本t检验)
应用场景:是针对两组不相关样本(各样本量可以相等也可以不相等),检验它们在均值之间的差异。对于该检验方法而言,我们首先要确定两个总体的方差是否相等,如果不等,先利用levene检验,检验两总体是否具有方差齐性。
原假设和备择假设:

例如,我想检验A公司销售额的均值和B公司销售额的均值是否存在差异。
实现:使用stats.levene检验方差是否相等,再使用stats.ttest_ind进行独立样本t检验,代码如下:
A = stats.norm.rvs(loc=1, scale=1, size=(100)) #生成A公司的销售额
B = stats.norm.rvs(loc=3, scale=1, size=(100)) #生成B公司的销售额
stats.levene(A, B) #进行levene检验
out:LeveneResult(statistic=0.8054648213132949, pvalue=0.37055445629183437)
得到的p值大于0.05,说明满足方差相等。使用ttest_ind函数进行独立样本t检验,函数的最后一个参数为判断两个样本的方差是否相同,如果不同,设为False进行独立样本t检验。
stats.ttest_ind(A,B,equal_var=True) #进行独立样本t检验
out:Ttest_indResult(statistic=-15.25297417258199, pvalue=2.993305057567317e-35)
检验结果显示p远小于0.05,我们拒绝原假设,即认为A公司和B公司的销售额均值存在显著差异
四、配对t检验
应用场景:是针对同一组样本在不同场景下均值之间的差异。检验的是两配对样本差值的均值是否等于0,如果等于0,则认为配对样本之间的均值没有差异,否则存在差异。
原假设和备择假设:

例如,我们有A公司今年的销售额以及去年的销售额,来判断今年和去年的销售额均值之间是否有差异。与独立样本t检验相比,配对样本T检验要求样本是配对的,两个样本的样本量要相同。
实现:可以选择单样本t检验的ttest_1samp函数(两组样本的差异为输入),也可以直接选择实现配对样本t检验的ttest_rel函数(两组样本作为输入)。代码如下:
A0 = stats.norm.rvs(loc=1, scale=1, size=(100)) #生成去年的销售额
A1 = stats.norm.rvs(loc=1.5, scale=1, size=(100)) #生成今年的销售额
# 计算两年销售额之间的差值
diff = A0-A1
# 使用ttest_1samp函数计算配对样本的t统计量
stats.ttest_1samp(diff)
out:
Ttest_1sampResult(statistic=13.983206457471795, pvalue=1.1154473504425075e-14)
# 使用ttest_rel函数计算配对样本的t统计量
stats.ttest_rel(A0,A1)
out:
Ttest_relResult(statistic=-4.731625986009621, pvalue=7.412846164679422e-06)
可见,用哪个函数最终得到的t和p值都是相同的。对于这个问题,p值小于0.05,认为两年的销售额存在显著差异。
利用python库stats进行t检验的更多相关文章
- 利用python库twilio来免费发送短信
大家好,我是四毛,最近开通了个人公众号“用Python来编程”,欢迎大家“关注”,这样您就可以收到优质的文章了. 今天跟大家分享的主题是利用python库twilio来免费发送短信. 先放一张成品图 ...
- 利用python库计算person相关系数
使用numpy库,可以实现person相关系数的计算,例如对于矩阵a. a Out[235]: array([[1, 1, 2, 2, 3], [2, 2, 3, 3, 5], [1, 4, 2, 2 ...
- 利用python进行数据分析——(一)库的学习
总结一下自己对python常用包:Numpy,Pandas,Matplotlib,Scipy,Scikit-learn 一. Numpy: 标准安装的Python中用列表(list)保存一组值,可以用 ...
- 利用pip批量更新python库
如果python库比较旧,需要更新到最新版本,可以利用pip工具. DOS命令行下,输入pip -V查看pip版本,可以先把pip更新到新版本. 查看系统里过期的python库 pip list #列 ...
- 利用Python进行数据分析——重要的Python库介绍
利用Python进行数据分析--重要的Python库介绍 一.NumPy 用于数组执行元素级计算及直接对数组执行数学运算 线性代数运算.傅里叶运算.随机数的生成 用于C/C++等代码的集成 二.pan ...
- python利用selenium库识别点触验证码
利用selenium库和超级鹰识别点触验证码(学习于静谧大大的书,想自己整理一下思路) 一.超级鹰注册:超级鹰入口 1.首先注册一个超级鹰账号,然后在超级鹰免费测试地方可以关注公众号,领取1000积分 ...
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- 人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型
人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型 经过前面稍显罗嗦的准备工作,现在,我们终于可以尝试训练我们自己的卷积神经网络模型了.CNN擅长图像处理,keras库的te ...
- python 利用PIL库进行更改图片大小的操作
python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...
随机推荐
- VM Linux (Centos)联网
今天新建一个linux突然发现不能上网,然后百度好多都不行,最后还是解决掉了,这是我的配置方法 鼠标左击虚拟机(或者选中之后直接设置),找到设置选项,打开网络适配器,设为NAT模式 然后进入虚拟机,进 ...
- nginx处理vue打包文件后的跨域问题
起因 在vue文件打包后,项目脱离了vue配置的反向代理配置,还是会报跨域的错误,或者直接打不开本地文件, 但是此刻我们想打开打包后的文件,测试一下文件有没有错误,因为经常会存在开发阶段没有问题,打包 ...
- Netcore中简单使用MemoryCache
用到缓存架构,我们一般都会想到的Redis,因为它支持分布式,高可用,速率非常快.MemoryCache则相对较少提到,但是对于单体项目或者小型项目,memorycache还是是不错的选择.Memor ...
- delphi key解密转c# 解决string 不可变长度问题
遇见问题: delphi的解密需要在c#里面实现 方法一:delphi编写delphi dll组件,c#里面调用 方法二:c#重写delphi的代码进行解析 方法一: delphi部分代码: libr ...
- Pyston v2.0 发布,解决 Python 慢速的救星
Pyston 自从 2017 年发布 0.6.1 版本后,已经淡出了人们的视线三年多了,导致现在新人都很少听过它的大名. 前两天(2020年10月28日)Pyston 在官方博客上(https://b ...
- typora 图片存储在COS
背景 一直在使用的markdown编辑器:typora ,在其内部图片默认是存储在本机C盘中的,现想将图片方放到云端存储,节省存储空间 方法 将typora中的图片上传到腾讯云的COS中 参考:链接 ...
- 03 原型模式(prototype)
03 原型模式(prototype) 1 克隆羊问题 现在有一只羊tom,姓名为: tom.年龄为: 1,颜色为:白色,请编写程序创建和tom羊属性完全相同的10只羊. 2 传统方式解决 思路 cla ...
- ceph luminous bluestore热插拔实现
需求描述 在某些测试场景下面,需要满足能够拔盘以后在插入的时候能够自动上线磁盘,这个需求实际在生产中是不建议使用的,原因是插入的磁盘如果本身存在问题,那么拉起的操作可能会破坏了本身集群的稳定性,所以这 ...
- ubuntu掉电出现检查文件系统的问题
修改: /etc/default/rcS FSCKFIX=no 为 FSCKFIX=yes 出现这个情况的原因是硬件时钟偏移了 显示上次挂载根目录在未来时间. 写于: 2013年11月28日 更新于: ...
- 手把手教你5分钟从零开发一款简易的IDEA插件!项目经验/毕设不愁了!
我这个人没事就喜欢推荐一些好用的 IDEA 插件给大家.这些插件极大程度上提高了我们的生产效率以及编码舒适度. 不知道大家有没有想过自己开发一款 IDEA 插件呢? 我自己想过,但是没去尝试过.刚好有 ...