python假设检验容貌、成绩_高级数据分析7.2:假设检验与python实现

一.假设检验的步骤1.问题是什么? H0;H1

2.证据是什么? 由样本数据计算H0成立的概率p-value

3.判断标准是什么? 显著性水平alpha=5%/1%/0.1%

4.做出结论。若p-value

二.案例分析

“超级引擎”是一家专门生产汽车引擎的公司,根据政府发布的新排放要求,引擎排放平均值要低于20ppm, (ppm是英文百万分之一的缩写,这里我们只要理解为是按照环保要求汽车尾气中碳氢化合物要低于20ppm)。公司制造出10台引擎供测试使用,每一台的排放水平如下:15.6 16.2 22.5 20.5 16.4 19.4 16.6 17.9 12.7 13.9

怎么知道公司生产的引擎是否符合政府规定呢?如果你是这家公司的数据分析师,该怎么办呢?

1.描述统计分析

我们开展调查研究并计算统计结果时,我们会在报告的第一部分进行描述统计分析,例如平均值和标准差。描述统计量是研究的核心。告诉我们研究中发生的情况,应该始终报告出来。

#导入包

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

#样本数据集

dataSer=pd.Series([15.6,16.2,22.5,20.5,16.4,

19.4,16.6,17.9,12.7,13.9])

#样本平均值

sample_mean=dataSer.mean()

#样本标准差

sample_std=dataSer.std()

print('样本平均值=',sample_mean,'单位:ppm')

print('样本标准差=',sample_std,'单位:ppm')

'''这里要区别:数据集的标准差,和样本标准差数据集的标准差公式除以的是n,样本标准差公式除以的是n-1。样本标准差,用途是用样本标准差估计出总体标准差pandas计算的标准差,默认除以的是n-1,也就是计算出的是样本标准差'''

(2)推论统计分析

推论统计分析报告中包括:假设检验,置信区间,效应量

(2.1) 问题是什么?零假设和备选假设

要研究的问题是:这些样本数据是否满足新标准呢?

根据这个问题我提出来下面两个互为相反的假设。

零假设H0:公司引擎排放不满足标准,也就是平均值u>=20。这里的20是政府规定新标准的最低可能值。

零假设总是表述为研究没有改变,没有效果,不起作用等,这里就是不满足标准。

备选假设H1:公司引擎排放满足标准,也就是平均值u<20

(2.2) 检验类型

因为这里只有1个样本,所以选择单样本检验。

(2.3)抽样分布类型

我们还要判断抽样分布是哪种?因为抽样分布的类型,决定了后面计算p值的不同。

在我们这个汽车引擎案例中,样本大小是10(小于30),属于小样本。那小样本的抽样分布是否满足t分布呢?因为t分布还要求数据集近似正态分布,所以下面图片我们看下样本数据集的分布长什么样。

'''直方图能够粗略估计数据密度,如果想给数据一个更精确的拟合曲线(专业术语叫:核密度估计kernel density estimate (KDE)),Seaborn 可以很方便的画出直方图和拟合曲线。查看数据集分布官网教程地址:https://seaborn.pydata.org/tutorial/distributions.html'''

'''需要先在navigator中安装绘图包seaborn,'''

import seaborn as sns

#查看数据集分布

sns.distplot(dataSer)

plt.title('数据集分布')

plt.show()

通过观察上面数据集分布图,数据集近似正态分布,满足t分布的使用条件,所以抽样分布是t分布,自由度df=n-1=10-1=9。

注:柱状图与直方图的区别

(2.4)检验方向

单尾检验(左尾,右尾),还是双尾检验?

因为备选假设是公司引擎排放满足标准,也就是平均值u<20。所以我们使用单尾检验中的左尾检验。

综合以上分析,本次假设检验是单样本t检验,单尾检验中的左尾。

(2.5)计算t值与p-value

在零假设成立前提下,得到样本平均值的概率p是多少?

计算p值步骤:

#方法一:手动计算,熟悉过程

# 1)计算标准误差:标准误差=样本标准差/(n的开方)

#样本大小

n = 10

#标准误差=样本标准差/(n的开方)

se =sample_std / (np.sqrt(n))

# 2)手动计算t值:t=(样本平均值-总体平均值)/标准误差

#总体平均值:就是政府发布的标准20

pop_mean=20

#t值

t=(sample_mean-pop_mean) / se

#计算出t值=-3

print('标准误差se=',se)

print('t=',t)

'''2)也可以查t表得到对应的t值3)计算自由度df=n-1,t值对应的概率:p=0.0149计算p值的工具:https://www.graphpad.com/quickcalcs/'''GraphPad Software#方法一:手动计算,熟悉过程

# 1)计算标准误差:标准误差=样本标准差/(n的开方)

#样本大小

n = 10

#标准误差=样本标准差/(n的开方)

se =sample_std / (np.sqrt(n))

# 2)手动计算t值:t=(样本平均值-总体平均值)/标准误差

#总体平均值:就是政府发布的标准20

pop_mean=20

#t值

t=(sample_mean-pop_mean) / se

#计算出t值=-3

print('标准误差se=',se)

print('t=',t)

'''2)也可以查t表得到对应的t值3)计算自由度df=n-1,t值对应的概率:p=0.0149计算p值的工具:https://www.graphpad.com/quickcalcs/'''

'''方法二:用python统计包scipy自动计算用scipy计算出的是:双尾检验单(1samp)样本t检验(ttest_1samp):https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_1samp.html相关(related)样本t检验(ttest_rel):https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_rel.html双独立(independent)样本t检验(ttest_ind):https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_ind.html'''

#导入统计模块(stats)

from scipy import stats

#总体平均值

pop_mean=20

'''ttest_1samp:单独样本t检验返回的第1个值t是假设检验计算出的(t值),第2个值p是双尾检验的p值'''

t,p_two =stats.ttest_1samp(dataSer,pop_mean)

print('t值=',t,'双尾检验的p值=',p_two)

'''因为scipy计算出的是双尾检验的t值和p值,但是我们这里是左尾检验。根据对称性,双尾的p值是对应单尾p值的2倍'''

#单尾检验的p值

p_one=p_two/2

print('单尾检验的p值=',p_one)

(2.6)比较,得出结论

#判断标准(显著水平)使用alpha=5%

alpha=0.05

'''左尾判断条件:t < 0 and p_one < 判断标准(显著水平)alpha右尾判断条件:t > 0 and p_one < 判断标准(显著水平)alpha'''

#做出结论

if(t<0 and p_one< alpha):

#左尾判断条件

print('拒绝零假设,有统计显著,也就是汽车引擎排放满足标准')

else:

print('接受零假设,没有统计显著,也就是汽车引擎排放不满足标准')

结论:独立样本t(9)=-3.00 , p=.0074 (α=5%),单尾检验(左尾)

(2.7)置信区间

'''1)置信水平对应的t值(t_ci)查t表格可以得到,95%的置信水平,自由度是n-1对应的t值2)计算上下限置信区间上限a=样本平均值 - t_ci ×标准误差置信区间下限b=样本平均值 - t_ci ×标准误差'''

'''查找t表格获取95%的置信水平,自由度是n-1对应的t值'''

t_ci=2.262

#使用scipy计算标准误差

se=stats.sem(dataSer)

#置信区间上限

a=sample_mean - t_ci * se

#置信区间下限

b=sample_mean + t_ci * se

print('单个平均值的置信区间,95置信水平 CI=(%f,%f)' % (a,b))

(2.8)效应量

为什么要给出效应量?在判断某个调查研究的结果,是否有意义或者重要时,要考虑的另一项指标是效应量。效应量太小,意味着处理即使达到了显著水平,也缺乏实用价值。所以,在假设检验中,我们给出了是否具有统计显著性,也要给出效应量,一起来判断研究结果是否有意义。

效应量是指处理效应的大小,例如药物A比药物B效果显著。度量效应量有很多种,但大多数都属于两大主要类别。

1)第一种叫做差异度量

例如在对比平均值时,衡量效应大小的常见标准之一是Cohen's d

Cohen's d = (样本平均值1-样本平均值2) / 标准差

Cohen's d 除以的是标准差,也就是以标准差为单位,样本平均值和总体平均值之间相差多少。

我们用d的绝对值来衡量效果的显著性。

2)第二种叫做相关度度量

例如R平方,表示某个变量的变化比例与另一变量的关系。可以用t检验的信息推出R平方的公式,这里的t值从t检验中获得的值,df是自由度。

r2=t2 / (t2+df),其中r2是指r的平方,t2是t的平方

如果r平方等于20%,表示我们可以说通过知道另一个变量能够接受相关变量20%的变化情况

'''效应量:差异指标Cohen's dd=(sample_mean - pop_mean) / sample_std效应量:相关度指标R2'''

n=10 #样本大小

df=n-1 #自由度

R2=(t*t)/(t*t+df)

print('d=',d)

print('R2=',R2)

3.案例分析总结

1、描述统计分析

样本平均值17.17ppm,样本标准差2.98ppm

2、推论统计分析

1)假设检验

独立样本t(9)=-3.00,p=.0074(α=5%),单尾检验(左尾)

公司引擎排放满足标准

2)置信区间

平均值的置信区间,95% CI=(17.11,17.23)

3)效应量

d=-0.94

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值