t检验通常分为三种,分别是单样本t检验、双样本t检验和配对样本t检验。本文基于python的scipy.stats函数对每种t检验进行了介绍和实验。

一、t检验介绍

无论哪种t检验,都有以下的基本前提条件:

  1. 样本数据符合正态分布
  2. 各个样本之间是独立的

步骤:

  1. 提出原假设和备择假设
  2. 构造t统计量
  3. 计算t统计量
  4. 对于得到的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 statsrvs = 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检验相关推荐

  1. python分析pcap文件_利用Python库Scapy解析pcap文件的方法

    每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...

  2. 利用python库twilio来免费发送短信

    利用python库twilio来免费发送短信 twilio介绍 Twilio是一个做成开放插件的电话跟踪服务(call-tracking service).美国当地时间2016年6月23日,云通讯公司 ...

  3. 利用python实现非参数方法(拟合优度检验)

    简介 数据不符合正态分布时,无法直接用t分布和F分布及正态分布来检验数据的显著性.如果检验对于数据分布没有要求,这类检验统称为非参数检验.本文将介绍其中的一种拟合优度检验. 拟合优度检验-期望频数相等 ...

  4. 零基础利用Python库you-get下载b站等视频网站的视频(会员视频需有账号并且设置cookie)

    文章目录 利用python下载视频 安装python 配置环境变量 下载you-get库 (需要下载会员视频)找到cookie 配置参数 写在开头: 之所以写这个教程是因为之前想要下载b站视频(PC端 ...

  5. 利用Python库,把Python当PS用!

    给大家带来一篇关于PIL的文章,PIL全称是Python Image Library,顾名思义,是用来做图像处理的.用这个库,可以实现很多PS里的效果,比如像图片模糊.寻找轮廓.边缘检测等等.我们来看 ...

  6. 利用python库中的turtle模块绘制自己的名字

    # 利用turtle模块绘制自己名字 --杨文博 import turtle as p p.pensize(5) p.pencolor("cornflowerblue") p.se ...

  7. 邮件发送时间怎么修改 python_怎么发送邮箱-2分钟教会你如何利用Python库定时或者批量发送电子邮件...

    本文介绍下如何用smtplib发送email.工作中如果每天需要发送日报啊,或者需要把相同的电子邮件发给不同顾客啊,定时发送某些提示邮件啊.学会这个就不会担心会忘记发了. 下面的代码本人测试过没问题. ...

  8. 图像配准-弹性变换利用Python库-PyElastix快速实现弹性配准

    b站视频地址: 一. 环境准备 系统选择:Windows.mac.Linux均可 准备步骤: 安装Pyelastix库 pip install pyelastix or conda install p ...

  9. 利用python库moviepy,快速剪辑视频

    安装moviepy pip install moviepy 剪辑代码 from moviepy.editor import *if __name__ == '__main__':# 剪辑50-60秒的 ...

最新文章

  1. mongdb安装使用
  2. 程序员的比较工具大杂烩
  3. EventBus3.0源码解析
  4. 撰写第三周课程总结及实验报告(一)
  5. 【C语言进阶深度学习记录】十一 C语言中enum,sizeof,typedef分析
  6. [Leedcode][JAVA][第542题][01矩阵][BFS]
  7. 只需6步,教你从零开发一个签到小程序
  8. 面试pythone_叮!你需要的Python面试指南以送到!
  9. java中怎么打开标尺_PageOffice如何显示/隐藏Word文档中的标尺
  10. web 前端常用组件【04】Datetimepicker 和 Lodop
  11. python热力相关系数图_【Python可视化6】Seaborn之heatmap热力图
  12. 【Unity面试】 Unity基础核心 | 面试真题 | 全面总结 | 建议收藏
  13. Jensen不等式及其应用
  14. Axure元件-内联框架设计网页
  15. Excel对图片的组合以及选择
  16. C#与C++混合编程及性能分析
  17. 一发入魂!15分钟让你快速入门Python
  18. 当@PathVariable遇上了.
  19. 等待事件:control file parallel write
  20. Qt之调用FFTW3实现音频频谱(实现)

热门文章

  1. unity实战之lol技能释放范围
  2. 酷鱼桌面2设计器简介
  3. 仅3步,这家大型制造企业用数据实现运营全提升
  4. 个人移植的酷派大神F2移动定制版Recovery
  5. 计算机控制知识点总结,自己整理的计算机控制重点
  6. ANSYS Electronic desktop软件无法打开问题--(AppBase.dll,FLEXlm Error-8)
  7. OPT锂电焊缝缺陷检测方案
  8. C#将数组转换为字符串,且将字符串分割存入数组中
  9. 更换新口号 ,发力雄安,李彦宏在百度AI的黎明回望初心
  10. 汉字怎么转换成十六进制