假设检验原理

  • 反证法
  • 小概率事件在一次试验中是几乎不可能发生的(但在多次重复试验中是必然发生的)

假设检验的步骤

  1. 设置原假设与备择假设;
  2. 设置显著性水平python 知道t值计算p python t检验p值_python 知道t值计算p(通常选择python 知道t值计算p python t检验p值_样本均值_02);
  3. 根据问题选择假设检验方式;
  4. 计算统计量,并通过统计量获取P值
  5. 根据P值和显著性水平python 知道t值计算p python t检验p值_python 知道t值计算p值,决定接受原假设还是备择假设。

原假设备择假设的设置:

  • 应当把如果真实成立但误判为不成立后会造成严重后果的命题选为原假设
  • 应当把分析人员想证明正确的命题作为备择假设
  • 应当把大众普遍认为成立的命题作为原假设,因为原假设不能轻易拒绝,除非有足够的证据。

P值:当原假设为真时所得到的样本观察结果或更极端结果出现的概率。

P值的计算:检验统计量python 知道t值计算p python t检验p值_样本均值_04,根据样本数据计算得到的检验统计量python 知道t值计算p python t检验p值_假设检验_05

  • python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_python 知道t值计算p_07python 知道t值计算p python t检验p值_样本均值_08
  • python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_python 知道t值计算p_10python 知道t值计算p python t检验p值_假设检验_11
  • python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_python 知道t值计算p_13python 知道t值计算p python t检验p值_假设检验_14

判断是否接受原假设:

  • 若P值很小(小于某个给定的显著性水平python 知道t值计算p python t检验p值_python 知道t值计算p),说明观测到的样本是小概率事件,但小概率事件不会发生,即观测的样本不可能是小概率事件,因此拒绝原假设。

正态总体的均值检验【Z检验与t检验】

Z检验——总体方差已知

双边检验

python 知道t值计算p python t检验p值_python 知道t值计算p_16,假定的总体均值python 知道t值计算p python t检验p值_假设检验_17

  • 原假设python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_python 知道t值计算p_19
  • 备择假设python 知道t值计算p python t检验p值_样本均值_20python 知道t值计算p python t检验p值_样本均值_21

  Z 统计量:
python 知道t值计算p python t检验p值_样本均值_22

  • python 知道t值计算p python t检验p值_python 知道t值计算p_23:样本均值;
  • python 知道t值计算p python t检验p值_样本均值_24:样本均值分布的标准差;
  • python 知道t值计算p python t检验p值_假设检验_25:总体的标准差;
  • python 知道t值计算p python t检验p值_假设检验_26:样本量。

python 知道t值计算p python t检验p值_标准差_27时,统计量python 知道t值计算p python t检验p值_样本均值_28

python 知道t值计算p python t检验p值_标准差_29

import numpy as np
from scipy import stats

a=np.array([-0.547,-0.532,-0.548,-0.531,-0.535])
#总体的均值与方差
mean,std=-0.545,0.008
#计算样本均值
sample_mean=a.mean()
#计算样本均值分布的标准差
se=std/np.sqrt(len(a))
#计算Z统计量
Z=(sample_mean-mean)/se
print('统计量Z:',Z)
#计算P值
P=2*stats.norm.sf(abs(Z))#1-CDF
print('P-Value:',P)

输出:

统计量Z: 1.788854381999821
P-Value: 0.07363827012030438

P值大于python 知道t值计算p python t检验p值_假设检验_30,因此,没有充分理由证明原假设不成立,接受原假设。

Python学习笔记(4)–Scipy科学计算库学习

单边检验

  • 原假设python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_样本均值_32
  • 备择假设python 知道t值计算p python t检验p值_样本均值_20python 知道t值计算p python t检验p值_假设检验_34

统计量的计算与双边检验无区别,仅P值计算有区别。

#计算P值
P=stats.norm.sf(abs(Z))#1-CDF
print('P-Value:',P)

输出:

P-Value: 0.03681913506015219

P值小于python 知道t值计算p python t检验p值_假设检验_30,因此拒绝原假设。

单样本t 检验——总体方差未知
  • 原假设python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_标准差_37
  • 备择假设python 知道t值计算p python t检验p值_样本均值_20python 知道t值计算p python t检验p值_标准差_39

  t 统计量:
python 知道t值计算p python t检验p值_假设检验_40

  • python 知道t值计算p python t检验p值_python 知道t值计算p_23:样本均值;
  • python 知道t值计算p python t检验p值_样本均值_24:样本均值分布的标准差;
  • python 知道t值计算p python t检验p值_样本均值_43:样本的标准差;
  • python 知道t值计算p python t检验p值_假设检验_26:样本量。

python 知道t值计算p python t检验p值_标准差_27时,统计量 python 知道t值计算p python t检验p值_python 知道t值计算p_46

随着自由度的增加,t分布趋于标准正态分布。

import numpy as np
from scipy import stats

a=np.array([50,48,50,47,46,48,51])
#样本容量
n=len(a)
#总体均值
mean=50
#计算样本均值、标准差
sample_mean,std=a.mean(),a.std(ddof=1)
#计算样本均值分布的标准差
se=std/np.sqrt(n)
#计算t统计量
t=(sample_mean-mean)/se
print('统计量t:',t)
#计算P值
P=stats.t.cdf(t,df=n-1)
print('P-Value:',P)
  • np.std():分母为n
  • np.std(ddof=1):分母为n-1

输出:

统计量t: -2.0851441405707507
P-Value: 0.041074075305325815

P值小于python 知道t值计算p python t检验p值_假设检验_30,因此拒绝原假设,支持备择假设。

两配对样本t检验

根据样本数据对样本来自两配对总体的均值是否有显著性差异进行判断。具体分为两种:

  • 同一研究对象分别给予两种不同的处理方式产生的两组数据;
  • 对同一研究对象处理前后进行比较。

应用前提:

  • 两样本应是配对的(两样本观察值数目同,两样本观察值的顺序不能随意改变);
  • 样本来自的两个总体应服从正态分布。

python 知道t值计算p python t检验p值_样本均值_48为两样本配对数据差值python 知道t值计算p python t检验p值_样本均值_49的总体平均数,则python 知道t值计算p python t检验p值_假设检验_50,转化为单样本t检验,

  • 原假设python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_python 知道t值计算p_52
  • 备择假设python 知道t值计算p python t检验p值_样本均值_20python 知道t值计算p python t检验p值_python 知道t值计算p_54

t 统计量:
python 知道t值计算p python t检验p值_样本均值_55

  • python 知道t值计算p python t检验p值_样本均值_56:差值样本(两成对样本的差值)的均值;
  • python 知道t值计算p python t检验p值_python 知道t值计算p_57:差值样本的标准差;
  • python 知道t值计算p python t检验p值_假设检验_26:样本量。

python 知道t值计算p python t检验p值_标准差_59时,统计量 python 知道t值计算p python t检验p值_python 知道t值计算p_46

import numpy as np
from scipy import stats

sample1=np.array([98.8,92.0,94.9,101.2,99.3,85.1,94.8,89.2,89.5,92.1])
sample2=np.array([88.4,92.4,90.3,89.4,89.3,89.0,92.5,87.4,88.9,86.4])
#计算样本数据的差值,得到偏差样本
D=sample1-sample2
#计算样本容量
n=len(D)
#计算差值样本的均值和标准差
bar_D,std_D=D.mean(),D.std(ddof=1)
#计算统计量
t=bar_D/(std_D/np.sqrt(n))
print('t统计量:',t)
#计算P值
P=stats.t.sf(t,df=n-1)
print('P-Value:',P)

输出:

t统计量: 2.6201598341361576
P-Value: 0.013901825506428343

P值小于python 知道t值计算p python t检验p值_假设检验_30,因此拒绝原假设,支持备择假设。

两独立样本t检验与两配对样本t检验的异同

  • 配对样本检验用于检验两个相关的样本是否来自具有相同均值的正态总体;
  • 独立样本检验用于检验两个独立样本是否来自具有相同均值的总体,相当于两个正态总体的均值是否相等。

两独立样本t检验(两正态总体均值差的检验)

  • 原假设python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_python 知道t值计算p_63
  • 备择假设python 知道t值计算p python t检验p值_样本均值_20python 知道t值计算p python t检验p值_假设检验_65

检验方法

  • python 知道t值计算p python t检验p值_假设检验_66已知:检验统计量
    python 知道t值计算p python t检验p值_假设检验_67
  • python 知道t值计算p python t检验p值_假设检验_66未知且相等:利用合并方差作为两个总体方差的估计,检验统计量
    python 知道t值计算p python t检验p值_标准差_69

python 知道t值计算p python t检验p值_python 知道t值计算p_70

  • python 知道t值计算p python t检验p值_假设检验_66未知且不等:分别采用各自的方差,需要修正t分布的自由度,检验统计量
    python 知道t值计算p python t检验p值_假设检验_72

检验总体的比例是否可靠【总体比率检验】

  • 原假设python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_python 知道t值计算p_74
  • 备择假设python 知道t值计算p python t检验p值_样本均值_20python 知道t值计算p python t检验p值_python 知道t值计算p_76

应用前提:

  • 样本容量python 知道t值计算p python t检验p值_假设检验_77
  • python 知道t值计算p python t检验p值_python 知道t值计算p_78python 知道t值计算p python t检验p值_标准差_79python 知道t值计算p python t检验p值_标准差_80为样本比率)
  • 服从二项分布。当python 知道t值计算p python t检验p值_假设检验_26较大时,二项分布近似正态分布

样本比率抽样分布近似服从正态分布,因此使用Z统计量,
python 知道t值计算p python t检验p值_python 知道t值计算p_82

import numpy as np
from scipy import stats

#样本比率
p=45/500
#总体比率
pi_0=0.1
#样本容量
n=500
#计算Z统计量
Z=(p-pi_0)/np.sqrt(pi_0*(1-pi_0)/n)
print('Z统计量:',Z)
#计算P值
P=stats.norm.cdf(Z)
print('P-Value:',P)

输出:

Z统计量: -0.7453559924999305
P-Value: 0.22802827012512783

P值大于python 知道t值计算p python t检验p值_假设检验_30,因此没有充足的理由拒绝原假设。

检验不同方案的好坏【A/B测试】

  A/B测试的本质是分离式组间试验,也叫对照试验。A/B测试在产品优化中的应用方法是:在产品正式迭代发版之前,为同一个目标制定两个(或以上)方案,将用户群对应分成几组,在保证每组用户特征相同的前提下,让用户分别看到不同的方案设计,根据几组用户的真实数据反馈,科学的帮助产品进行决策。

python 知道t值计算p python t检验p值_python 知道t值计算p_84

  • 理想情况是,不同的方案应同一受试者测试,并且受试者对两个方案的反应是独立的。
  • A/B测试的应用方式决定了它拥有的三大特性:先验性、并行性和科学性。
  • 先验性: A/B测试其实是一种“先验”的试验体系,属于预测型结论,与“后验”的归纳性结论差别巨大。
  • 并行性: A/B测试是将两个或以上的方案同时在线试验,这样做的好处在于保证了每个版本所处环境的一致性,便于更加科学客观地对比优劣。同时,也节省了验证的时间,无需在验证完一个版本之后再测试另一个。
  • 科学性: 这里强调的是流量分配的科学性。A/B 测试的正确做法,是将相似特征的用户均匀的分配到试验组中,确保每个组别的用户特征的相似性,从而避免出现数据偏差,使得试验的结果更有代表性。

  随机将测试用户群分为2部分,用户群1使用A方案,用户群2使用B方案,不妨设A方案为参考方案(或旧方案),B方案为实验方案(或新方案)。由于每次实验结果要么成功,要么失败,所以A,B的分布可看作是伯努利分布:
python 知道t值计算p python t检验p值_假设检验_85

python 知道t值计算p python t检验p值_假设检验_86时,二项分布近似正态分布,其均值方差分别为python 知道t值计算p python t检验p值_样本均值_87

  • 原假设python 知道t值计算p python t检验p值_样本均值_06python 知道t值计算p python t检验p值_假设检验_89
  • 备择假设python 知道t值计算p python t检验p值_样本均值_20python 知道t值计算p python t检验p值_python 知道t值计算p_91

A、B两方案的试验成功率分别为python 知道t值计算p python t检验p值_python 知道t值计算p_92,检验统计量
python 知道t值计算p python t检验p值_样本均值_93

A/B-test显著性检验AppAdhoc A/B Testing使用文档