当前位置: 首页 > article >正文

做数据分析为何要学统计学(5)——什么问题适合使用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.kler.cn/a/163288.html

相关文章:

  • 【C++】 list 与 string 基础与实现字符串操作
  • ELK-Logstash配置
  • Visual Studio Code 端口转发功能详解
  • c和cpp的异常处理
  • 如何管理好自己的LabVIEW项目
  • thinkphp自定义命令行+宝塔面板Shell脚本实现定时任务
  • C语言 - 字符函数和字符串函数
  • 【vSphere | VM】虚拟机自定义规范Ⅲ —— 创建 Linux 虚拟机自定义规范
  • mongdb配置ssl
  • 用Python实现十大经典排序算法(附动图)
  • 周赛374(枚举、思维题、分组循环+枚举、组合数学)
  • Docker网络原理及Cgroup硬件资源占用控制
  • Apollo新版本Beta自动驾驶技术沙龙参会体验有感—百度自动驾驶开源框架
  • 电脑软件:TileIconifier开始菜单美化工具介绍
  • 大电流H桥电机驱动电路的设计与解析(包括自举电路的讲解,以IR2104+LR7843为例)
  • linux常用命令-yum命令详解(超详细)
  • 视频处理关键知识
  • 用C++实现队列顺序结构的基本操作
  • 年底不同外贸客户催单模板分享
  • 大数据技术4:Lambda和Kappa架构区别
  • 机器学习实验三:支持向量机模型
  • RedHat8.1安装mysql5.6(GLIBC方式)
  • Criteria类
  • 【Linux systemctl命令控制软件的启动和关闭】
  • Python面向对象基础
  • 【SpringCache】快速入门 通俗易懂