引入所需的包

from scipy import stats
import numpy as np

注:ttest_1samp, ttest_ind, ttest_rel均进行双侧检验
H0:μ=μ0 H_0: μ=μ_0
H1:μ≠μ0 H_1: μ≠μ_0

单样本T检验-ttest_1samp

ttest_1samp官方文档

生成50行x2列的数据

np.random.seed(7654567)  # 保证每次运行都会得到相同结果
# 均值为5,方差为10
rvs = stats.norm.rvs(loc=5, scale=10, size=(50,2))

检验两列数的均值与1和2的差异是否显著

stats.ttest_1samp(rvs, [1, 2])

返回结果:

Ttest_1sampResult(statistic=array([ 2.0801775 , 2.44893711]), pvalue=array([ 0.04276084, 0.01795186]))

分别显示两列数的t统计量和p值。由p值分别为0.042和0.018,当p值小于0.05时,认为差异显著,即第一列数的均值不等于1,第二列数的均值不等于2。


不拒绝原假设——均值等于5

stats.ttest_1samp(rvs, 5.0)

Ttest_1sampResult(statistic=array([-0.68014479, -0.04323899]), pvalue=array([ 0.49961383, 0.96568674]))


拒绝原假设——均值不等于5

stats.ttest_1samp(rvs, 0.0)

Ttest_1sampResult(statistic=array([ 2.77025808, 4.11038784]), pvalue=array([ 0.00789095, 0.00014999]))


第一列数均值等于5,第二列数均值不等于0

stats.ttest_1samp(rvs,[5.0,0.0])

Ttest_1sampResult(statistic=array([-0.68014479, 4.11038784]), pvalue=array([ 4.99613833e-01, 1.49986458e-04]))


第一行数均值等于5,第二行数均值不等于0

#axis=0按列运算,axis=1按行运算
stats.ttest_1samp(rvs.T,[5.0,0.0],axis=1) 

Ttest_1sampResult(statistic=array([-0.68014479, 4.11038784]), pvalue=array([ 4.99613833e-01, 1.49986458e-04]))


将两列数据均值分别与5.0和0.0比较,得到4个t统计量和p值

stats.ttest_1samp(rvs,[[5.0],[0.0]])

Ttest_1sampResult(statistic=array([[-0.68014479, -0.04323899],
[ 2.77025808, 4.11038784]]), pvalue=array([[ 4.99613833e-01, 9.65686743e-01],
[ 7.89094663e-03, 1.49986458e-04]]))

两独立样本t检验-ttest_ind

ttest_ind官方文档
生成数据

np.random.seed(12345678)
#loc:平均值  scale:方差
rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)
rvs2 = stats.norm.rvs(loc=5,scale=10,size=500)

当两总体方差相等时,即具有“方差齐性”,可以直接检验
不拒绝原假设——两总体均值相等

stats.ttest_ind(rvs1,rvs2)

Ttest_indResult(statistic=0.26833823296238857, pvalue=0.78849443369565098)


当不确定两总体方差是否相等时,应先利用levene检验,检验两总体是否具有方差齐性。

stats.levene(rvs1, rvs2)

LeveneResult(statistic=1.0117186648494396, pvalue=0.31473525853990908)

p值远大于0.05,认为两总体具有方差齐性。

如果两总体不具有方差齐性,需要将equal_val参数设定为“False”。


需注意的情况:

如果两总体具有方差齐性,错将equal_var设为False,p值变大

stats.ttest_ind(rvs1,rvs2, equal_var = False)

Ttest_indResult(statistic=0.26833823296238857, pvalue=0.78849452749501059)


两总体方差不等时,若没有将equal_var参数设定为False,则函数会默认equal_var为True,这样会低估p值

rvs3 = stats.norm.rvs(loc=5, scale=20, size=500)
stats.ttest_ind(rvs1, rvs3, equal_var = False)

正确的p值
Ttest_indResult(statistic=-0.46580283298287956, pvalue=0.64149646246568737)


stats.ttest_ind(rvs1, rvs3)

被低估的p值
Ttest_indResult(statistic=-0.46580283298287956, pvalue=0.64145827413435608)


当两样本数量不等时,equal_val的变化会导致t统计量变化
rvs1:来自总体——均值5,方差10,样本数500
rvs2:来自总体——均值5,方差20,样本数100
两总体不具有方差齐性,应设定equal_var=False

rvs4 = stats.norm.rvs(loc=5, scale=20, size=100)
stats.ttest_ind(rvs1, rvs4)

错误的t统计量
Ttest_indResult(statistic=-0.99882539442782847, pvalue=0.31828327091038783)


stats.ttest_ind(rvs1, rvs4, equal_var = False)

正确的t统计量
Ttest_indResult(statistic=-0.69712570584654354, pvalue=0.48716927725401871)


不同均值,不同方差,不同样本量的t检验
错误的检验:未将equal_var设定为False

rvs5 = stats.norm.rvs(loc=8, scale=20, size=100)
stats.ttest_ind(rvs1, rvs5)

Ttest_indResult(statistic=-1.4679669854490669, pvalue=0.14263895620529113)


正确的检验:

stats.ttest_ind(rvs1, rvs5, equal_var = False)

Ttest_indResult(statistic=-0.94365973617133081, pvalue=0.34744170334794089)


配对样本t检验

ttest_rel官方文档

np.random.seed(12345678)

不拒绝原假设,认为rvs1 与 rvs2 所代表的总体均值相等

rvs1 = stats.norm.rvs(loc=5,scale=10,size=500)
rvs2 = (stats.norm.rvs(loc=5,scale=10,size=500) + stats.norm.rvs(scale=0.2,size=500))
stats.ttest_rel(rvs1,rvs2)

Ttest_relResult(statistic=0.24101764965300979, pvalue=0.80964043445811551)


拒绝原假设,认为rvs1 与 rvs3所代表的总体均值不相等

rvs3 = (stats.norm.rvs(loc=8,scale=10,size=500) + stats.norm.rvs(scale=0.2,size=500))
stats.ttest_rel(rvs1,rvs3)

Ttest_relResult(statistic=-3.9995108708727924, pvalue=7.3082402191661285e-05)


利用python进行T检验相关推荐

  1. 利用python实现Diebold-Mariano检验

    文章目录 DM检验的原理 代码实现 函数说明 实例 本文参考 DM检验的原理 给定两个预测的预测结果,我们希望比较他们的预测结果,以用于模型预测精度的比较. Diebold-Mariano检验本质是一 ...

  2. python怎么实现检验_[python skill]利用python实现假设性检验方法

    [python skill]利用python实现假设性检验方法 刀尔東 2018-08-03 09:19:13 1244 收藏 2 版权 hello,大噶好,最近新学习了利用python实现假设性检验 ...

  3. python 白噪声检验-利用python实现平稳时间序列的建模方式

    假如某个观察值序列通过序列预处理可以判定为平稳非白噪声序列,就可以利用ARMA模型对该序列进行建模.建模的基本步骤如下: (1)求出该观察值序列的样本自相关系数(ACF)和样本偏自相关系数(PACF) ...

  4. 利用python进行单边T检验

    可以利用 python 中的 scipy.stats.ttest_ind 做关于两组数据的双边 t 检验,结果比较简单.但是做 大于或者小于的单边检测的时候需要做一些处理,才能得到正确的结果. fro ...

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

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

  6. python构建t检验(Student’s t-test)

    python构建t检验(Student's t-test) t检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n < 30),总体标准差σ未知的正 ...

  7. json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?

    本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...

  8. python逐步回归筛选变量_利用python实现逐步回归

    逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除.以确保每次引入新 ...

  9. 数据分析 python 用途-利用Python数据分析可以实现些什么功能呢?

    随着大数据时代的来临和Python编程语言的火爆,Python数据分析早已成为现在职场人的必备核心技能.那么利用Python数据分析可以做什么呢?简单来说,可以做到的内容有很多,比如检查数据表.数据表 ...

最新文章

  1. 自然辩证法的当代价值
  2. c++性能之对象与指针性能比较、以及java与c++性能对比实测
  3. SAP UI5 应用开发教程之十四 - 嵌入视图的使用方式
  4. html 格式化 vim,代码格式化插件
  5. 【双十一精选】史上最强的宝贝详情页设计思路以及操作流程
  6. Butterworth数字滤波器设计
  7. iView的表格做一个带斜线的表头
  8. (arxiv-2022)具有自适应距离对齐的时空步态特征
  9. gnome显示桌面图标_「GNOME 3」- 如何显示桌面图标? @20210123
  10. MySQL 8.0 不能被远程连接的解决办法及修改密码、创建用户、授予所有权
  11. CDA数据分析师认证与Pearson VUE达成深度合作
  12. 小米Redis的K8s容器化部署实践
  13. 西部数据推出10TB容量监控级硬盘
  14. 哈师大计算机学院2016级新生,【通知公告】哈尔滨师范大学2016—2017学年度国家励志奖学金获奖学生初审名单公示...
  15. 【2022秋招】IC设计/FPGA开发秋招经历总结
  16. Poly-encoders(2020 ICLR)
  17. 华为云桌面Workspace,让你的办公更加舒适惬意
  18. C++勾股定理及拓展解题
  19. GB/T 8323.2塑料 烟生成 第2 部分:单室法测定烟密度试验方法
  20. Chrome 开小号方法

热门文章

  1. Openstack私有云简介之Nova
  2. 使用pd4ml 将html转换为pdf
  3. ② ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)】
  4. 利用计算机控制数控机床,计算机辅助在《数控机床》教学中应用实例
  5. 安装Appium、Node.js、连接雷电模拟器、录制脚本
  6. 承兑汇票识别API开发文档
  7. 片偏移怎么计算_桥架水平45度弯头做法(图解)及槽式桥架计算公式
  8. vue 计算文件hash值_vue项目打包文件增加hash值
  9. VM虚拟机中无法使用鼠标滚轮(罗技鼠标)
  10. openmv集成应用_OpenMV简介