做数据分析为何要学统计学(6)——什么问题适合使用t检验?

t检验(Student's t test),主要依靠总体正态分布的小样本(例如n < 30)对总体均值水平进行差异性判断。

t检验要求样本不能超过两组,且每组样本总体服从正态分布(对于三组以上样本的,要用方差分析,其他文章详述)。因此使用t检验前需要对所有样本分别进行正态分布检验。如果有不服从正态分布的情况,可以考虑使用MannWhitney检验和Wilcoxon检验,后面单独文章介绍。

需要说明的是t检验还分为单样本t检验、独立双样本t检验配对双样本t检验,适用条件也各有不同,以下分别举例介绍。

1.单样本t检验

用于判断总体是否与既定均值无差异,可以通俗理解为总体均值是否与该既定均值相等。如下例

某产品合格率经10轮检测,保持在如下水平,试问可否认为其合格率为96.5%?

合格率(%):97.6 93.5 98.7 95.4 95.2 97.7 96.1 94.6 96.8 95.7

首先,使用scipy.stats.normaltest对样本进行正态分布检验.

from scipy import stats
import numpy as np
X=np.array([97.6,93.5, 98.7 ,95.4 ,95.2 ,97.7, 96.1 ,94.6 ,96.8 ,95.7])
stats.normaltest(X)
结果:NormaltestResult(statistic=0.07878377023988445, pvalue=0.9613738871946388)。p>0.05,样本通过正态分布检验。

然后,使用sstats.ttest_1samp进行单样本t检验。

stats.ttest_1samp(X,96.5)

结果:Ttest_1sampResult(statistic=-0.7396549082121191, pvalue=0.47835758603283807)。p>0.05,接受总体均值为96.5%的假设。

2.独立双样本t检验

用于判断两组独立样本在总体上是否均值无差异,可以通俗理解为两组独立采样的样本所代表的总体均值是否相等。所谓独立采样指的是:对不同个体或单位的受试对象进行采样,如对男性和女性的身高进行采样。采样方法可以相同,也可以不同。

独立双样本t检验还要求两组样本的总体方差齐性(也就是无差异),如果方差不齐,则可以使用Welch t检验(Welch's t-test)。

首先我们先来看满足独立双样本t检验的例子。

某产品两条生产线的合格率经10轮检测,保持在如下水平,试问可否认为其合格率是相同的?

生产线1合格率(%):97.6 93.5 98.7 95.4 95.2 97.7 96.1 94.6 96.8 95.7

生产线2合格率(%):97.2 94.2 97.8 94.9 96.3 98.7 96.5 95.6 97.1 96.2

以下为示例代码

X1=np.array([97.6,93.5, 98.7 ,95.4 ,95.2 ,97.7, 96.1 ,94.6 ,96.8 ,95.7])
X2=np.array([97.2,94.2,97.8,94.9,96.3,98.7,96.5,95.6,97.1,96.2])
#正态分布检验
stats.normaltest(X1),stats.normaltest(X2)
#方差齐性检验
stats.levene(X1,X2)
#独立双样本t检验
stats.ttest_ind(X1,X2)

上述各项检验p值均大于0.05,因此可以接受两条生产线产品质量无差异的假设。

如果X2=[87.2,92.2,97.8,97.9,96.3,98.7,86.5,95.6,97.1,86.2],则两组样本无法通过方差齐性检验(p=0.03878,小于显著性水平a=0.05)。于是,我们采用Welch t检验。

#独立双样本Welch t检验,equal_var参数值为False时,ttest_ind执行Welch t检验检验
stats.ttest_ind(X1,X2,equal_var=False)

检验结果为:Ttest_indResult(statistic=1.5289576830456144, pvalue=0.15523450660981364)。可以接受两个生产线产品质量相同的假设。

3.配对双样本t检验

用于判断两组配对样本在总体上是否均值无差异。所谓配对采样指的是:对同一个体或单位的受试对象进行采样,如一个人在两个不同时间点的血压值。

配对双样本t检验也要求两组样本的总体方差齐性,同时要求样本容量相同且两个样本各数值的顺序与采样顺序一致。

配对双样本t检验的函数是stats.ttest_rel(X1,X2),使用方法与独立双样本t检验相同,不再赘述。


以上介绍的是均值无差异推断。这种推断是双侧的(two-sided),在实际应用中,我们还会遇到单侧检验(one-sided)的情况,即判断不同总体的均值大小。例如判断第一条生产线的产品质量是否优于第二条生产线。

无论是独立双样本t检验还是配对双样本t检验均支持单侧检验,只需要在检验函数中加入alternative参数即可。该参数的取值为“less”或"greater"。如下例

#X1与X2服从正态分布但方差不齐,使用Welch t检验(单侧)
X1=np.array([97.6,93.5, 98.7 ,95.4 ,95.2 ,97.7, 96.1 ,94.6 ,96.8 ,95.7])
X2=np.array([87.2,92.2,97.8,97.9,96.3,98.7,86.5,95.6,93.1,86.2])
stats.ttest_ind(X1,X2,alternative="less",equal_var=False)
结果:Ttest_indResult(statistic=1.81631548017011, pvalue=0.9514575126271494)。

该结果如何解读呢?是\bar{X_1}>\bar{X_2},还是\bar{X_1}<\bar{X_2}?这是很多初学者比较困惑的地方。这里作出重要解释:

假设检验的基本思想是“小概率事件”原理,其统计推断方法是带有某种概率性质的反证法。换句话说,我想得到A这个结果,我需要做得事是证明\bar{A}不成立。也就是说

零假设(null hypothesis,无效假设)H_0: \bar{A}

备择假设(alternative hypothesis,想要的结果)H_1: A

 上述检验的备择检验H1是"less",所以零假设H0就是"greater"。由于p>0.05,所以接受零假设,即\bar{X_1}>\bar{X_2}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/267953.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day38-springboot-crud开发

springboot实现CRUD 一、需求 实现对一张表数据的增删改查,使用springbootssm实现后端接口代码,实现接口工具测试 二、搭建环境 2.1 数据库环境 创建数据库: springboot_crud 注意: 确定是否有该库 创建表: create table stu (id int primary key auto_increment,sname varch…

SAP中有关角色和权限的重要数据库表

1. AGR_USERS 角色与用户对应关系 2. AGR_TEXTS 角色的中文描述 3. AGR_TCODES 查询角色所有的T-code&#xff0c; 报表类型 TR 4. 用户信息USER_ADDR 5. AGR_1251 查询角色所有的T-code &#xff0c;角色对象 S_TCODE 6. USR02 查看哪些用户被锁定&#xff08;UFLAG&…

量化交易与人工智能:Python库的应用与效用

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 量化交易简介 量化交易是一种利用计算机算法执…

docker- 部署Jenkins集成Gitlab

目录 一、部署环境 二、获取镜像 三、配置maven 四、创建挂载目录 五、启动容器 六、Jenkins 初始化 七、相关插件安装与环境配置 八、Jenkins结合Gitlab进行构建及使用Gitlab钩子 一、部署环境 工具版本Docker20.10.14Jenkins2.396Gitlab14.8.2-eeJDK8、11Maven3.6…

2024年甘肃省职业院校技能大赛信息安全管理与评估赛项二三阶段样题一

2024年甘肃省职业院校技能大赛高职学生组电子与信息大类信息安全管理与评估赛项样题一 第二阶段 任务书 任务描述 随着网络和信息化水平的不断发展&#xff0c;网络安全事件也层出不穷&#xff0c;网络恶意代码传播、信息窃取、信息篡改、远程控制等各种网络攻击 行为已严重…

算法Day27 身材管理(三维背包)

身材管理&#xff08;三维背包&#xff09; Description Input Output Sample 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt(); // 输入n的值int money sca…

解决方案- 材料吸波、屏蔽性能测试系统 (10MHz~500GHz)

材料吸波、屏蔽性能测试系统 &#xff08;10MHz~500GHz&#xff09; 材料电磁参数综合测试解决方案 材料吸波、屏蔽性能测试系统测试频率范围可达10MHz&#xff5e;500GHz&#xff0c;可实现材料反射率、屏蔽性能特性参数测试。系统由矢量网络分析仪、测试夹具、系统软件等组…

处理器的状态管理

在超标量处理器内部有两个状态, Architecture State 指令集定义的状态&#xff0c;例如通用寄存器的值、PC值以及存储器的值等&#xff1b;Speculative State 超标量处理器内部的状态,例如重命名使用的物理寄存器、重排序缓存(ROB)、发射队列(Issue Queue)和Store Buffer等部件…

Node.js 事件循环简单介绍

1.简介 Node.js 事件循环是 Node.js 运行时环境中的一个核心机制&#xff0c;用于管理异步操作和回调函数的执行顺序。它基于事件驱动模型&#xff0c;通过事件循环来处理和派发事件&#xff0c;以及执行相应的回调函数。 Node.js 是单进程单线程应用程序&#xff0c;但是因为…

Python入门第6篇(FastApi、uvicorn)

前言 FastApi用来开发webapi&#xff0c;可以定义路由、定义get、post方法等 但是要让浏览器可以访问webapi&#xff0c;还需要用到uvicorn&#xff0c;即web服务器&#xff0c;类似Tomcat、iis这种的 pip安装相关包 FastApi uvicorn 注意&#xff1a;可能一次安装不成功…

系列十、SpringBoot + MyBatis + Redis实现分布式缓存(基于注解方式)

一、概述 上篇文章 系列九、SpringBoot MyBatis Redis实现分布式缓存 介绍了基于xml方式实现分布式缓存的效果&#xff0c;当前大家使用的技术栈基本是springboot各种框架的组合&#xff0c;而springboot显著的一个特点就是去xml配置&#xff0c;那么在无xml配置的情形下&…

mysql:建议使用INT UNSIGNED类型存储IPv4地址

建议使用INT UNSIGNED类型存储IPv4地址&#xff0c;而不要使用INT类型&#xff0c;也不建议使用VARCHAR(15)类型存储。 在mysql中&#xff0c;内嵌函数INET_ATON(expr)可以将IP地址字符串转换为整数&#xff0c;内嵌函数INET_NTOA(expr)可以将整数转换为ip地址字符串。 例如&a…