假设检验是我个人比较薄弱的一项,写这篇总结,也是对自己的检查。为了学习假设检验,我在知乎上查询了很多介绍,看了《商务与经济统计》中假设检验的相关章节。希望自己能有更清楚的认识。
一、T检验介绍
假设检验:问题是什么、证据是什么、判断标准是什么、做出结论。
(1)定义:T检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n < 30),总体标准差σ未知的正态分布。[1]T检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。它与f检验、卡方检验并列。t检验是戈斯特为了观测酿酒质量而发明的,并于1908年在Biometrika上公布[2]。
(2)适用条件
- 已知一个总体均数;
- 可得到一个样本均数及该样本标准差;
- 样本来自正态或近似正态总体 [3] 。
(3)分类
- 单样本T检验:检验单个样本的平均值是否等于目标值;
例:某大学生的平均身高是否大于全国平均身高167.2cm?
- 相关配对检验:检验相关或配对观测之差的平均值是否等于目标值;
例:为了检测减肥药是否起作用,随机抽样出20个样本,记录每个人服药前后的体重
- 独立双样本检验:检验两个独立样本的平均值之差是否等于目标值
例:AB测试
(4)假设检验步骤
1)样本标准差S:估计总体标准差
2)
3)根据t值,查找t表格,得到p值
4)相关配对的效应值
二、问题背景
“超级引擎”是一家专门生产汽车引擎的公司,根据政府发布的新排放要求,引擎排放平均值要低于20ppm, (ppm是英文百万分之一的缩写,这里我们只要理解为是按照环保要求汽车尾气中碳氢化合物要低于20ppm)。
公司制造出10台引擎供测试使用,每一台的排放水平如下:
15.6 16.2 22.5 20.5 16.4 19.4 16.6 17.9 12.7 13.9
怎么知道,公司生产的引擎是否符合政府规定呢?
如果你是这家公司的数据分析师,该怎么办呢?
三、python详细分析过程
- 描述性统计分析
# 导入数据分析包
scipy为统计模块
# 导入样本数据集
data = pd.Series([15.6,16.2 ,22.5 ,20.5 ,16.4 ,19.4 ,16.6, 17.9 ,12.7, 13.9])
data
样本为10个,小于30
# 样本均值
data_mean = data.mean()
data_mean
#样本标准差
'''
区别:样本标准差和总体标准差
样本标准差=(x-均值)/(n-1)
总体标准差=(x-均值)/n
pandas默认除以n-1,也就是计算的是样本标准差
'''
data_std = data.std()
data_mean =17.169999999999998
data_std=2.9814426038413018
2.推论统计分析
关于零假设与备选假设的设定问题,一个根本性的原则是从备选假设入手,问题中想要证明达成的目的就是备选假设。
零假设和备选假设
要研究的问题是:这些样本数据是否满足新标准呢?
根据这个问题我提出来下面两个互为相反的假设。
零假设H0:公司引擎排放不满足标准,也就是平均值u>=20。这里的20是政府规定新标准的最低可能值。
零假设总是表述为研究没有改变,没有效果,不起作用等,这里就是不满足标准。
备选假设H1:公司引擎排放满足标准,也就是平均值u<20
抽样分布类型
考虑到样本容量小于30,且只有一个样本,若样本基本符合正态分布,则符合单样本T检验
# 查看样本值分布情况
import seaborn as sns
sns.distplot(data)
由上图可知,样本基本符合正态分布,因此采用单样本T检验。
#总体均值
pop_mean=20
'''
用scipy计算出的是:双尾检验
单(1samp)样本t检验(ttest_1samp)
相关(related)样本t检验(ttest_rel)
双独立(independent)样本t检验(ttest_ind)
'''
t,p_towTail = stats.ttest_1samp(data,pop_mean)
t值= -3.00164952589 双尾检验的p值= 0.0149164142489
# 单尾检测的p值
p_one = p_towTail/2
单尾检验的p值= 0.00745820712445
3.判断标准
#判断标准(显著水平)使用alpha=5%
alpha=0.05
4.做出结论
- 左尾判断条件:t < 0 and p_one < 判断标准(显著水平)alpha
- 右尾判断条件:t > 0 and p_one < 判断标准(显著水平)alpha
p值:假定原假设成立的前提下,得到样本平均值的概率是多少。p值越小,则拒绝原假设
根据左尾检验判断,拒绝原假设,也就是汽车的引擎排放满足标准。
5.置信区间
# 查找t表格获取95%的置信水平,自由度是n-1对应的t值
#本例的自由度df=10-1=9
t_ci=2.262
#使用scipy计算标准误差
se=stats.sem(data)
#置信区间上限
a=sample_mean - t_ci * se
#置信区间下限
b=sample_mean + t_ci * se
单个平均值的置信区间,95置信水平 CI=(15.037353,19.302647)
6.效应量
效应量是指处理效应的大小。
为什么要给出效应量?
在判断某个调查研究的结果,是否有意义或者重要时,要考虑的另一项指标是效应量。效应量太小,意味着处理即使达到了显著水平,也缺乏实用价值。
标准:.20 小的效应,.50中等效应,.80高的效应(d绝对值)
所以,在假设检验中,我们给出了是否具有统计显著性,也要给出效应量,一起来判断研究结果是否有意义。
d=(sample_mean - pop_mean) / sample_std
d= -0.9492049239364257
7.统计分析报告
1、描述统计分析
样本平均值17.17ppm,样本标准差2.98ppm
2、推论统计分析
1)假设检验
独立样本t(9)=-3.00,p=.0074(α=5%),单尾检验(左尾)
公司引擎排放满足标准
2)置信区间
平均值的置信区间,95% CI=(15.04,19.30)
3)效应量
d=-0.94