利用python进行T检验
引入所需的包
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检验相关推荐
- 利用python实现Diebold-Mariano检验
文章目录 DM检验的原理 代码实现 函数说明 实例 本文参考 DM检验的原理 给定两个预测的预测结果,我们希望比较他们的预测结果,以用于模型预测精度的比较. Diebold-Mariano检验本质是一 ...
- python怎么实现检验_[python skill]利用python实现假设性检验方法
[python skill]利用python实现假设性检验方法 刀尔東 2018-08-03 09:19:13 1244 收藏 2 版权 hello,大噶好,最近新学习了利用python实现假设性检验 ...
- python 白噪声检验-利用python实现平稳时间序列的建模方式
假如某个观察值序列通过序列预处理可以判定为平稳非白噪声序列,就可以利用ARMA模型对该序列进行建模.建模的基本步骤如下: (1)求出该观察值序列的样本自相关系数(ACF)和样本偏自相关系数(PACF) ...
- 利用python进行单边T检验
可以利用 python 中的 scipy.stats.ttest_ind 做关于两组数据的双边 t 检验,结果比较简单.但是做 大于或者小于的单边检测的时候需要做一些处理,才能得到正确的结果. fro ...
- 利用python实现非参数方法(拟合优度检验)
简介 数据不符合正态分布时,无法直接用t分布和F分布及正态分布来检验数据的显著性.如果检验对于数据分布没有要求,这类检验统称为非参数检验.本文将介绍其中的一种拟合优度检验. 拟合优度检验-期望频数相等 ...
- python构建t检验(Student’s t-test)
python构建t检验(Student's t-test) t检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n < 30),总体标准差σ未知的正 ...
- json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?
本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...
- python逐步回归筛选变量_利用python实现逐步回归
逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除.以确保每次引入新 ...
- 数据分析 python 用途-利用Python数据分析可以实现些什么功能呢?
随着大数据时代的来临和Python编程语言的火爆,Python数据分析早已成为现在职场人的必备核心技能.那么利用Python数据分析可以做什么呢?简单来说,可以做到的内容有很多,比如检查数据表.数据表 ...
最新文章
- 自然辩证法的当代价值
- c++性能之对象与指针性能比较、以及java与c++性能对比实测
- SAP UI5 应用开发教程之十四 - 嵌入视图的使用方式
- html 格式化 vim,代码格式化插件
- 【双十一精选】史上最强的宝贝详情页设计思路以及操作流程
- Butterworth数字滤波器设计
- iView的表格做一个带斜线的表头
- (arxiv-2022)具有自适应距离对齐的时空步态特征
- gnome显示桌面图标_「GNOME 3」- 如何显示桌面图标? @20210123
- MySQL 8.0 不能被远程连接的解决办法及修改密码、创建用户、授予所有权
- CDA数据分析师认证与Pearson VUE达成深度合作
- 小米Redis的K8s容器化部署实践
- 西部数据推出10TB容量监控级硬盘
- 哈师大计算机学院2016级新生,【通知公告】哈尔滨师范大学2016—2017学年度国家励志奖学金获奖学生初审名单公示...
- 【2022秋招】IC设计/FPGA开发秋招经历总结
- Poly-encoders(2020 ICLR)
- 华为云桌面Workspace,让你的办公更加舒适惬意
- C++勾股定理及拓展解题
- GB/T 8323.2塑料 烟生成 第2 部分:单室法测定烟密度试验方法
- Chrome 开小号方法
热门文章
- Openstack私有云简介之Nova
- 使用pd4ml 将html转换为pdf
- ② ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)】
- 利用计算机控制数控机床,计算机辅助在《数控机床》教学中应用实例
- 安装Appium、Node.js、连接雷电模拟器、录制脚本
- 承兑汇票识别API开发文档
- 片偏移怎么计算_桥架水平45度弯头做法(图解)及槽式桥架计算公式
- vue 计算文件hash值_vue项目打包文件增加hash值
- VM虚拟机中无法使用鼠标滚轮(罗技鼠标)
- openmv集成应用_OpenMV简介