机器学习业务评估统计方法
Published:
工业界机器学习模型常需围绕业务展开,除了机器学习本身的模型评估指标外(如LogLoss、AUC、KL等),还需要针对业务目标进行相关统计信息评估,完成针对部分流量样本上线模型后的效果分析。例如,一个模型上线后因灰度测试考虑往往先分配较少流量,当讨论测试结果是否显著用以衡量新模型有效性时,就需要使用统计评估方法。本文汇总一些常用统计方法,用于分析统计量之间的关系。
假设检验目标与流程
假设检验是事先对总体(随机变量)的参数或总体分布形式做出一个假设,然后利用样本信息来判断这个假设是否合理。 例如,赵先生开了一家日用百货公司,该公司分别在郑州和杭州开设了分公司。现在存在下列数据作为两个分公司的销售额,集合中的每一个数代表着一年中某一个月的公司销售额。
杭州分公司 = {24,25,23,26,27,25,25,28,30,31,29}
现在,赵先生想要知道两个公司的月销售额是否有存在明显的差异,即是否存在郑州分公司月销售额高于杭州分公司月销售额,抑或反之。
在这个问题中,总体分布是郑州分公司月销售额和杭州分公司月销售额(理论上来说,总体分布永远无法得知,只能不断通过样本信息来逼近),样本信息是两个公司某11个月每个月的销售额。我们需要通过假设检验来利用样本信息推出总体分布之间的关系。我们可以提出零假设(null hypothesis)
\[H_0=两个分公司月销售额相等\]和备择假设(alternative hypothesis)
\[H_1=两个分公司月销售不相等\]通过假设检验,我们通常可以得出一个与某分布相关的统计量,例如Z统计量,T统计量,$\chi^2$统计量。之后可以通过统计量在其分布中的位置计算得出一个p值。p值代表 $H_0$ 会发生的概率,如果p值很小,说明 $H_0$ 会发生的概率很小,拒绝 $H_0$ 基本不会错,所以可以接受 $H_1$。上例中,杭州分公司的均值虽然大于郑州分公司的均值,但是p值=0.2027,通常p值小于0.05代表有显著性差异,所以我们无法拒绝 $H_0$(即使得到的p值很大,最后的结论也不能接受 $H_0$,因为统计检验的目标是拒绝 $H_0$ 而不是接受,所以结论只有有显著差异和无显著差异,并不能得出两个总体相等的结论) 。所以上例的结论是郑州分公司和杭州分公司的月销售额无显著性差异。
T检验
单样本 (single sample)
单样本T检验是检验单个样本平均数 $\bar{x}$ 与一个指定的常数 $\mu_0$ (一个已知的总体平均数)差异是否显著。当总体分布是正态分布,如总体标准差未知且样本容量小于30,那么样本平均数与总体平均数的离差统计量呈t分布。
条件:数据类型是连续值。已知样本平均数及样本标准差,样本来自正态或近似正态总体 ,通常样本含量较小(例如 $n<30$) 。
优点:容易获取全部需要计算的信息。
缺点:如果满足Z检验的条件时,T检验的准确度低于Z检验。
举例:
- 检验一组学生的平均 IQ 得分是否不等于100。
- 某校二年级学生期中英语考试成绩,其平均分数为73分,标准差为17分,期末英语考试后,随机抽取20人的英语成绩,其平均分数为79.2分。问二年级学生的英语成绩是否有显著性进步?
计算:
检验零假设 $H_0 : \mu =\mu_0$ 可利用以下统计量
\[t=\frac{\bar{x}-\mu_0}{s/\sqrt{n}}\]其中
\[s=\sqrt{\frac{\sum_{i=1}^n(x_i-\bar{x})^2}{n-1}}\]为样本标准偏差。该统计量t在零假设 $H_0 : \mu =\mu_0 $为真的条件下服从自由度为 $v=n − 1$ 的t分布。计算出t值之后,根据显著度 $\alpha$,自由度 $v$ ,可查t表得出结果。例如通过计算得出t值为2.5,样本数为10,显著度为0.05,通过查表可得临界t值为2.262,小于t值,所以可以拒绝零假设,得出结论 $\bar{x}$ 与 $\mu_0$ 存在显著差异。
业务案例:
假设现在业务需要衡量一款产品的用户体验。用户体验这个概念比较主观,我们需要将定性的数据进行定量化处理。我们将一般的用户体验分为以下5种:
- 感官体验:呈现给用户视听上的体验,强调舒适性。
- 交互体验:呈现给用户操作上的体验,强调易用/可用性。
- 情感体验:呈现给用户心理上的体验,强调友好性。
- 浏览体验:呈现给用户浏览上的体验,强调吸引性。
- 信任体验:呈现给用户的信任体验,强调可靠性。
我们针对每一种体验分别给予0-10,10个评分等级,针对每种体验给予自己主观的打分,之后算出五个分数的平均得分。例如我们的一个目标用户的体验得分如下:
分数段 得分 感官体验 0-10 4 交互体验 0-10 7 浏览体验 0-10 6 情感体验 0-10 7 信任体验 0-10 8 平均得分 0-10 6.4 我们邀请28个目标用户,事先与其沟通好每种体验的正确体验方式,得出了28人的体验平均得分样本:
6.2,5.3,8.7,7.4,5.2,6.9,8.3,4.4,7.8,6.5,5.9,5.3,5.4,7.5,7.4,4.3,8.5,6.9,6.4,4.7,8.7,6.4,9.2,6.3,4.7,6.5,5.4,7.1
我们假设用户体验的行业及格平均分的标准为6分。那么,我们提出的问题是,此产品的用户体验平均得分是否显著超过行业及格标准分?
我们假设用户体验得分服从正态分布,并且每个用户的体验得分相互独立。由于样本数量不足30且服从正态分布,满足使用单样本T检验的条件。在此问题中,零假设 $H_0$ 和备择假设 $H_1$ 分别为:
\[H_0: \mu =\mu_0\\H_1: \mu >\mu_0\]其中 $\mu$ 是总体用户体验得分,$\mu_0$ 是行业及格标准分。通过样本,我们可以得到 $\bar{x}=6.54$,$\mu_0=6$,$n=28$,通过上式可以计算得出 $s=1.3927$,$t=2.0517$。因为我们确信样本均值大于行业及格标准分,所以该检验问题为单侧检验。由于样本数 $n=28$,自由度 $v=n−1=27$ ,通过查询t表找到 $v=27$ 时显著水平 $\alpha=0.05$ 的t值临界值为1.703。由于计算得出t值大于t临界值,我们拒绝 $H_0$,我们可以判断此产品的样本用户体验得分显著大于行业及格标准分。
(案例数据来源:http://www.woshipm.com/pmd/721338.html)
双样本 (two sample)
双样本T检验是检验两个样本平均数 $\bar{x}_1$ 和 $\bar{x}_2$与其各自所代表的总体的差异是否显著。双总体T检验是检验两个样本平均数与其各自所代表的总体的差异是否显著。
条件:数据类型是连续值。已知两个样本的个数,样本均值,以及样本标准差。
优点:比较两组样本最简单的统计检验。
缺点:样本要求独立同分布,在样本数量少并且不能够严格满足条件时,可能会出现type-I和type-II错误。
举例:在小学三年级学生中随机抽取10名学生,在学期初和学期末分别进行了两次推理能力测验,成绩分别为79.5和72分,标准差分别为9.124,9.940。问两次测验成绩是否有显著地差异?
计算: 检验零假设 $H_0 : \mu_1 =\mu_2 $ 可利用以下统计量
\[t=\frac{\bar{x}_2-\bar{x}_1}{\sqrt{\frac{s_1^2}{n_1}+\frac{s_2^2}{n_2}}}\]其中 $s_1$ 和 $s_2$ 为样本标准差,该统计量t在零假设 $H_0 : \mu =\mu_0 $为真的条件下服从自由度为 $v=n_1+n_2 − 2$ 的t分布。计算出t值之后,根据显著度 $\alpha$,自由度 $v$ ,可查t表得出结果。
业务案例:
场景同上例,现在这款产品的某个组件得到根据一些用户反馈做了调整。我们又邀请到了22个目标用户,得出了22人在产品更新之后的体验平均得分样本:
8.2,5.5,4.7,7.4,6.2,6.3,4.3,6.4,7.5,8.5,5.4,6.3,5.6,5.5,7.4,4.7,8.2,4.9,5.4,4.6,8.3,6.6,9.2,6.3
现在我们提出的问题是,产品更新之后的用户体验平均得分是否与更新之前有所区别?
该问题中,零假设 $H_0$ 和备择假设 $H_1$ 分别为:
\[H_0: \mu_1 =\mu_2\\H_1: \mu_1 \ne \mu_2\]其中 $\mu_1$ 是产品更新之前的总体用户体验得分,$\mu_2$ 是产品更新之后的总体用户体验得分。通过样本,我们可以得到 $\bar{x}_1=6.54$,$\bar{x}_2=6.39$,$n_1=28$,$n_2=22$,通过上式可以计算得出 $s_1=1.3927$,$s_2=1.4735$,$t=0.3717$。因为我们想要检验更新之后的产品带来什么影响,并不确定这个影响会提升用户体验得分还是降低,所以该检验问题为双侧检验。由于样本数 $n_1=28$,$n_2=22$,自由度 $v=n_1+n_2−2=48$ 。我们的问题是判断通过查询t表找到 $v=48$ 时显著水平 $\alpha=0.05$ 的t值临界值为2.01。由于计算得出t值小于t值临界值,无法拒绝 $H_0$,最后的结论是产品更新之后与之前无显著差异(多么悲伤的结果)。
Z检验
单样本
单样本Z检验是检验一个样本平均数 $\bar{x}$ 与一个已知的总体平均数 $\mu_0$ 的差异是否显著。
条件:数据类型是连续值。需要知道这个对比总体的总体平均数 $\mu_0$ 和总体标准差 $\sigma_0$ 。
优点:简单且精确。
缺点:需要知道总体标准差 $\sigma_0$ ,多数情况 $\sigma_0$ 永远无法得知,但是在样本数量很大时可以用样本标准差代替总体标准差。
举例:
- 某班级的平均智商为114。全中国的平均智商是100,标准差为15。那么这个班级的平均智商是否显著高于全国平均智商?
- 根据1983年大量调查结果,已知某地成年男子的脉搏均数为72次/分钟。某医生2003年在该地区随机调查了100名成年健康男子,求得其脉搏均数为74.2次/分钟,标准差为6.5次/分钟,能否根据此认为该成年男子的脉搏数不同于1983年?
计算:
检验零假设 $H_0 : \mu =\mu_0$ 可利用以下统计量
\[z=\frac{\bar{x}-\mu_0}{\sigma/\sqrt{n}}\]得到z统计量之后可以通过查t表中自由度最后一栏(通常标注为 $\infty$ 或 $z$),或者直接查z表(又称标准正太分布表),得出相应的p值。
业务案例:
某游戏产品上线前根据问卷调查得出用户预期的平均游戏时长为每周10小时。在游戏上线后,根于50000样本用户统计得出一周内平均游戏时长为10.5小时,标准差为6。则该数据是否显著高于问卷得出的预期游戏时长?
在此问题中,零假设 $H_0$ 和备择假设 $H_1$ 分别为:
\[H_0: \mu =\mu_0\\H_1: \mu > \mu_0\]其中 $\mu$ 是总体用户每周平均游戏时长,$\mu_0$ 是预期的平均游戏时长。通过样本,我们可以得到 $\bar{x}=10.5$,$\mu_0=10$,$\sigma=6$,$n=50000$,通过上式可以计算得出 $z=18.6339$。通过查表,可得 $z>18.6339$ 时的正态分布累计概率密度趋近于0。由于该问题是单侧检验,最后得到的p值就为0。所以结论为拒绝 $H_0$, 游戏产品上线后用户每周平均游戏时长显著高于预期。
双样本
双样本Z检验是检验两个已知的总体平均数 $\mu_1$ 与 $\mu_2$ 的差异是否显著。检验来自两个的两组样本平均数的差异性,从而判断它们各自代表的总体的差异是否显著。
条件:数据类型是连续值。需要知道两个总体的标准差 $\sigma_1$ 和 $\sigma_2$ 。或者在样本数量大的时候用样本标准差 $s_1$ 和 $s_2$ 近似。
优点:简单且精确。
缺点:需要知道总体标准差 $\sigma_1$ 和 $\sigma_2$ 。
举例:
已知在男性献血者的血液中某种微量元素的数量变化的标准差为14.1ppm,女性为9.5ppm。现在有75名随机男性样本和50名随机女性样本的平均数为28和33ppm。则男性和女性血液中某种微量元素的数量是否有显著差异?
研究正常人与高血压患者胆固醇含量的资料如下,试比较两组血清胆固醇含量有无差别。
正常人组:n=506,x=180.6,s=34.2
高血压组:n=142,x=223.6,s=45.8
计算:
检验零假设 $H_0 : \mu_1 =\mu_2 $ 可利用以下统计量
\[z=\frac{\bar{x}_2-\bar{x}_1}{\sqrt{\frac{\sigma_1^2}{n_1}+\frac{\sigma_2^2}{n_2}}}\]得到z统计量之后可以通过查t表中自由度最后一栏(通常标注为 $\infty$ 或 $z$),或者直接查z表(又称标准正太分布表),得出相应的p值。
业务案例:
场景同上例,该游戏产品上线了一个新模块,想测试该模块是否会影响用户的每周平均游戏时长,于是将用户流量分成对照组和改进组,改进组上线新模块,对照组不上线。对照组和改进组分别有50000用户。对照组在一周内的平均游戏时长为10.5小时,标准差为6,改进组在一周内的平均游戏时长为10.6小时,标准差为8。则这个新模块与没上线之前是否对用户每周平均时长产生影响?
在此问题中,零假设 $H_0$ 和备择假设 $H_1$ 分别为:
\[H_0: \mu_1 =\mu_2\\H_1: \mu_1 \ne \mu_2\]其中 $\mu_1$ 是上线新模块的每周平均游戏时长,$\mu_2$ 是没上线新模块的每周平均游戏时长。通过样本,我们可以得到 $\bar{x}_1=10.5$,$\bar{x}_2=10.6$,$\sigma_1=6$,$\sigma_2=8$,$n_1=n_2=50000$,通过上式可以计算得出 $z=2.2360$。通过查表,可得 $z>2.2360$ 时的正态分布累计概率密度为0.0125。由于该问题是双侧检验,最后得到的p值为 $0.0125\times2=0.025$ 。所以结论为拒绝 $H_0$, 新模块上线后,用户一周平均游戏时长有提升,且与不上线有显著差异。
单比例
单比例Z检验是检验一个样本中服从二项分布的个体出现或事件发生的比例,是否与一个给定的比例有显著差异。
条件:数据类型是二项的(Bernoulli 数据)。需要知道个体出现的次数 $x$ 或者个体出现的比例 $\bar{p}$ ($\bar{p}=x/n$),样本个数 $n$,以及一个给定的比例 $p_0$。
优点:简单且精确。
缺点:假设个体出现是独立同分布的。独立指的是每个个体出现的概率不受其他个体影响,同分布指的是每个个体根据一个固定潜在的概率出现。但是独立同分布往往很难严格满足。
举例:政府决定扶持员工少数民族占比超过15%的公司。一家公司共73人,其中13人是少数民族。则该公司员工少数民族占比是否显著超过政府规定的15%?
计算:
检验零假设 $H_0 : p =p_0 $ 可利用以下统计量
\[z=\frac{\bar{p}-p_0}{\sqrt{\frac{p_0(1-p_0)}{n}}}\]得到z统计量之后可以通过查t表中自由度最后一栏(通常标注为 $\infty$ 或 $z$),或者直接查z表(又称标准正太分布表),得出相应的p值。
业务案例:
一个推荐系统上线前的预期点击转化率为50%。上线后,曝光用户数为10000,其中5100个用户点击了推荐物品,真实点击转化率为51%,高于预期的50%。但是在曝光用户数为10000的量级上,高于预期1%是否能够说明真实和预期点击转化率有显著差异呢?
在此问题中,零假设 $H_0$ 和备择假设 $H_1$ 分别为:
\[H_0: p =p_0\\H_1: p > p_0\]其中 $p$ 是该系统总体点击转化率,$p_0$ 是预期点击转化率。通过样本,我们可以得出 $\bar{p}=0.51$,$p_0=0.5$,$n=10000$,通过上式可以计算得出 $z=2$。通过查表,可得 $z>2$ 时的正态分布累计概率密度为0.0228。由于该问题是单侧检验,最后得到的p值就为0.0228。由于该p值小于0.05,所以可以得出结论,拒绝 $H_0$,真实点击转化率与预期点击转化率有显著差异。
同一个问题,如果把量级缩小10倍,曝光用户数为1000,其中510个用户点击了推荐物品,那么是否依然存在显著差异呢?在上式中,$p_0$ 和 $\bar{p}$ 都没有改变,只有 $n$ 变小了。通过计算得出 $z=0.6324$,查表得出p值为0.2643,无法拒绝 $H_0$。所以在 $n=1000$ 时,51%的转化率与50%无显著差异。
双比例
单比例Z检验是检验两组样本中服从二项分布的个体出现或事件发生的比例是否有显著差异。
条件:数据类型是二项的(Bernoulli 数据)。需要知道个体出现的次数 $x_1$ 和 $x_2$ 或者个体出现的比例 $\bar{p}_1$ 和 $\bar{p}_2$ ($\bar{p}=x/n$),样本个数 $n_1$ 和 $n_2$。
优点:简单且精确。
缺点:假设个体出现是独立同分布的。独立指的是每个个体出现的概率不受其他个体影响,同分布指的是每个个体根据一个固定潜在的概率出现。但是独立同分布往往很难严格满足。
举例:在一次政治票选中,46%的男性和49%的女性声称他们支持特朗普称为总统。如果该次统计当中包含247名男性和185名女性,那么男性和女性对于特朗普的支持率是否有显著差异?
计算:
检验零假设 $H_0 : p_1 =p_2 $ 可利用以下统计量
\[z=\frac{\bar{p}_2-\bar{p}_1}{\sqrt{\bar{p}\bar{q}(\frac{1}{n_1}+\frac{1}{n_2})}}\]其中
\[\bar{p} = \frac{n_1\bar{p}_1+n_2\bar{p}_2}{n_1+n_2}\]得到z统计量之后可以通过查t表中自由度最后一栏(通常标注为 $\infty$ 或 $z$),或者直接查z表(又称标准正太分布表),得出相应的p值。
业务案例:
一个推荐系统有新旧2个模型,分别占用50%的流量。两个模型的曝光用户数分别为10000和10500,且分别有5000和5100个用户点击了推荐物品,则两个模型的点击转化率是否有显著区别?
在此问题中,零假设 $H_0$ 和备择假设 $H_1$ 分别为:
\[H_0: p_1 =p_2\\H_1: p_1 \ne p_2\]其中 $p_1$ 是新模型点击转化率,$p_2$ 是旧模型点击转化率。通过样本,我们可以得出 $\bar{p}_1=0.5$,$\bar{p_2} = 0.4857$,$n_1=10000$,$n_2=10500$。z值可以计算得出为2.0450。通过查表,可得 $z>2.0450$ 时的正态分布累计概率密度为0.0205。由于该问题是双侧检验,最后得到的p值为 $0.0205\times 2=0.041$。由于该p值小于0.05,所以可以得出结论拒绝 $H_0$,新旧两个模型存在显著差异。
思考
何时T检验?何时Z检验?
用什么检验的理论依据是中心极限定理。根据中心极限定理,如果能够满足简单随机抽样具备30个样本容量,那么样本平均数的抽样分布就是近似正态概率分布(无论样本总体服从什么分布,只要是独立同分布都可以)。如果已知总体是正态分布,则不管简单随机抽样的样本是多少,样本均值的抽样分布都服从正态分布。因此在决定用什么检验的时候,需要考虑三个因素:是否已知总体标准差,样本数有多少,样本是否服从正态分布,然后根据下列规则进行判断:
if 已知总体标准差:
用Z检验
else:
if 样本数>30:
用样本标准差去估计总体标准差,然后用Z检验
else:
if 样本服从正态分布:
用T检验
else:
跟参数检验无缘了,用非参数检验吧
用什么检验,依据的是中心极限定理。中心极限定理中说,如果能够满足简单随机抽样具备30个样本容量,那么样本均值的抽样分布就是近似正态概率分布(注意不管总体服从什么分布);如果总体是正态概率分布的,不管简单随机抽样的样本是多少,样本均值的抽样分布都是正态概率分布。因此在你决定用什么检验的时候,首要考虑的条件是样本量,其次是总体是服从什么分布,然后因为样本均值的标准误(即样本均值抽样分布的标准差)的公式中需要知道总体的标准差,如果总体标准差知道,(无论大小样本,只是如果是小样本须满足总体要近似正态概率分布)都用Z检验;如果是大样本(n大于等于30),并且总体标准差未知,要用样本标准差去估计总体标准差(因为满足简单随机抽样,样本标准差总是总体标准差的无偏估计),然后还是用z分布做区间估计和假设检验;当样本量小于30,如果满足总体近似服从正态概率分布,如果总体标准差未知,可以用样本标准差去估计总体标准差,由此可用t分布做区间估计和假设检验。
简单总结:
总体标准差已知,考虑使用Z检验;总体标准差未知,但符合正态分布(样本大于30时也认为样本符合正态分布),考虑使用T检验。
何时用单侧?何时用双侧?
何时用单侧(one-tailed)?何时用双侧(two-tailed)?双侧检验的目的是比较两个总体是否相等,用来自两个总体的样本平均数来比较。零假设为两样本所代表的总体平均数相等;备择假设为不相等(有可能甲大于乙,也有可能甲小于乙),既两种情况都有可能发生。研究者做这样的假设说明
他没有充分的理由判断甲所代表的总体均数会大于乙的或甲的会小于乙的;
他只关心甲乙两个样本各自所代表的总体均数是否相等?至于哪个大不是他关心的问题.
这时研究者往往会采用双侧检验。例如一个班级的平均身高是否高于或者低于另一个班级的平均身高(高于或低于也可以称为不等)。
而如果研究者从专业知识的角度判断甲所代表的总体均数不可能大于(或小于)乙的,这时一般就采用单侧检验。例如一个班级里男生的平均身高是否显著高于这个班级里女生的平均身高。因为研究者确信男生的平均身高大于女生的平均身高,只是想知道具体高了多少,这个差距是否有显著性。
那么我们是应该使用单侧检验还是双侧检验?通常,双侧检验被用于没有强烈方向性期望的实验研究中,或是存在两个可竞争的预测时。例如,当一种理论预测分数增加,而另一种理论预测分数减少时,应当使用双侧检验。应当使用单侧检验的情况包括在进行实验前已经有方向性预测,或强烈需要做出方向性预测时。
在使用双侧检验时,最终p值需要将计算的统计量通过查表得出的p值乘以2,而单侧检验不需要。所以就显著性而言,单侧检验能够产生比双侧检验更高的显著性(p值更小)。而双侧检验更加严格,它要求更多的证据来拒绝零假设。
为什么T检验不能用来检验比例?
因为比例服从二项分布,根据中心极限定理,二项分布只有在 $n$ 很大时才服从正态分布,在小样本($n<30$)时,二项分布不服从正态分布,故无法使用T检验。
卡方检验
卡方检验(Chi-squared test / $\chi^2$ test )就是统计样本的实际观测值与理论推断值之间的偏离程度。通常在给定一个多行多列的表格中,测试表格中的行是否有不同的列分布。比较两个及两个以上样本率(构成比)以及两个分类变量的关联性分析。
与T检验、Z检验区别:卡方检验是对两个或两个以上样本率(构成比)进行差别比较的统计方法。T检验主要是用于样本具体的值差异程度的检验方法。
条件:样本来自同一分布,并且随机采样。
优点:可以同时比较一个样本中的多个变量。
缺点:最终的结果只能表明是否独立的显著性,但是并不能给出结论是哪一行或者哪一列导致了这个结果。
举例:
- 一个城市有1,000,000位居民住在4个街区A,B,C,D。每位居民可以被分类为白领,蓝领和无领。随机抽取650位居民,想要知道居民居住的街区是否跟他们的职业是独立的(住在哪里跟做什么没有关系)。数据可以由表格表示:
A B C D 合计 白领 90 60 104 95 349 蓝领 30 50 51 20 151 无领 30 40 45 35 150 合计 150 150 200 150 650 (数据来源:https://en.wikipedia.org/wiki/Chi-squared_test)
- 在分类资料统计分析中我们常会遇到这样的资料,如两组大白鼠在不同致癌剂作用下的发癌率如下表,问两组发癌率有无差别?
处理 发癌数 未发癌数 合计 发癌率% 甲组 52 19 71 73.24 乙组 39 3 42 92.86 合计 91 22 113 80.53 计算:
检验零假设 $H_0 : $ 数据的行类别与列类别是相互独立的,可以计算统计量:
\[\chi^2 = \sum_{i=1}^m\sum_{i=1}^n{\frac{O_{ij}-E_{ij}}{E_{ij}}}\]其中 $m, n$ 分别为行数和列数。$O_{ij}$ 是第 $i$ 行第 $j$ 列的观测数据,$E_{ij}$ 是第 $i$ 行第 $j$ 列的期望数据。
\[E_{ij} = \frac{1}{N}\sum_{j=1}^nO_{ij}\sum_{i=1}^mO_{ij}\]其中 $\sum_{j=1}^nO_{ij}$ 是第 $i$ 行的合计, $\sum_{i=1}^mO_{ij}$ 是第 $j$ 列的合计,$N$ 是样本总数。在上例中,住在A区的白领样 本人数是90,期 望人数是 $349 \times 150 ~/~ 650\approx80.54$。计算得出统计量 $\chi^2$ 之后,再通过自由度 $(m-1)(n-1)$,可以查 $\chi^2$ 表得出相应p值。
方差分析
方差分析(One-way ANOVA)。T检验只能用于对比量组样本之间的差异显著性,如果希望检验多组样本是否源自于同一个总体,进行两两T检验的结果往往不精确,这时候可以使用ANOVA。
ANOVA就是单/多因素方差分析,是用来研究一个/多个控制变量的不同水平是否对观测变量产生了显著影响。
简单说就是分析x的变化对y的影响的显著性,所以一般变量之间存在某种影响关系的,验证一种变量的变化对另一种变量的影响显著性的检验。一般的,方差分析都是配对的。
区别:如果从计算来看,独立样本之间不需要进行计算,只在本组中进行计算均值、标准差等,而方差分析中,要计算数据之间的组间差异和组内差异等。
条件:每组样本独立随机采样,组数大于二。
优点:统计鲁棒性强,统计结果可靠。
缺点:当拒绝零假设时,可以知道至少其中一组的来自于不同的总体分布,但是无法得知是哪一组。
举例: 测试三种化肥对植物的生长高度的影响是否相同。假设每种化肥在6个植物上进行测试:
A B C 6 8 13 8 12 9 4 9 11 5 11 8 3 6 7 4 8 12 (数据来源:https://en.wikipedia.org/wiki/One-way_analysis_of_variance)
计算:
检验零假设 $H_0 : \mu_1=\mu_2=\mu_3$ 。最终统计量是服从f分布的f统计值,中间结果可以记录在ANOVA表中:
源 平方和($SS$) 自由度($DF$) 均方($MS$) F值 方法 $SST$ $k-1$ $MST=SST / (k-1)$ $MST / MSE$ 误差 $SSE$ $N-k$ $MSE=SSE / (N-k)$ 合计 $SS$ $N-1$ 其中 $N$ 是样本总数,$k$ 是方法数。$SST$ 和 $SSE$的计算如下:
\[SST=\sum_{i=1}^kn_i(\bar{y}_i-\bar{y})^2\]其中 $\bar{y}_i$ 是第 $i$ 种方法的样本均值, $\bar{y}$ 是所有样本的均值,$n_i$ 是第 $i$ 种方法的样本个数。$SSE$ 的计算如下:
\[SSE=\sum_{i=1}^k\sum_{j=1}^{n_i}(y_{ij}-\bar{y}_i)^2\]最后计算得出的F值服从 $(k-1,N-k)$ 自由度的F分布,F值越大,检验结果越显著。对比指定显著度 $\alpha$ 查F表的结果可以得出结论。在上例中,计算可得:
通过查表,$F_{\alpha=0.05}(2,15)=3.6823<9.3$,所以结论是检验结果在0.05显著度下拒绝零假设。
曼-惠特尼U检验
曼-惠特尼U检验(Mann–Whitney U test)当样本不服从正态分布,且样本个数又少的情况下,可以使用非参数检验,曼-惠特尼U检验是一种简单有效的秩和检验(通过排序名次的和作为统计量的检验)。
条件:每组样本相互独立,样本个体是有序的(两个个体可以比较大小,不能是categorical)。
优点:不用假设分布和没有样本大小需求,两个样本的大小可以不相同。
缺点:比参数检验要弱,对于真实存在差异的情况可能无法检测出显著性。
举例: 一所体育俱乐部分别选取6名黑人和6名白人,并且记录下他们所用的时间,想要检验黑人和白人的短跑速度是否有差异。(时间长短不服从正太分布,且样本之间相互独立)
计算:
检验零假设 $H_0 : $ 两个总体无显著差异。
先将所有样本放在一起进行排序(升序或降序)得到排名序列 ${r_1,…,r_N}$,将排名序列按不同样本拆分得到 ${r_{1,1},…,r_{1,n_1}}$, ${r_{2,1},…,r_{2,n_2}}$。其中 $n_1$, $n_2$ 是两个样本大大小。如果多个样本的值相同,则他们平分他们所在的排名位置的和。例如,有4个个体并列第4名,则他们应该被排在4,5,6,7名,所以他们的排名都是5.5。然后计算出两个样本的累计排名:
U统计量的计算如下:
\[U_1=R_1-n_1(n_1+1)/2\\U_2=R_2-n_2(n_2+1)/2\\U=min(U_1,U_2)\]在样本大小较大时,U统计量趋于正态分布:
\[z=\frac{U-m_U}{\sigma_U}\]其中 $m_U$ 和 $\sigma_U$ 为期望和标准差:
\[m_U=\frac{n_1n_2}{2}\] \[\sigma_U=\sqrt{\frac{n_1n_2(n_1+n_2+1)}{12}}\]如果存在并列排名的情况,标准差的计算会更复杂一些:
\[\sigma_U=\sqrt{\frac{n_1n_2}{12}\bigg((n+1)-\sum_{i=1}^k\frac{t_i^3-t_i}{n(n-1)}\bigg)}\]其中 $t_i$ 是并列第 $i$ 排名的个体数,$k$ 是不同的排名数。剩下的步骤就是单样本z检验问题。
业务案例:
假设业务现在需要衡量一个竞足彩票推荐系统中上线的推荐模型与随机模型在每个曝光用户平均支付金额上是否有显著差异。每个曝光用户可以选择不购买该曝光彩票,也可以购买最低2元,最高2万元的彩票。由于用户购买金额是长尾的,不购买和购买2元的占绝大多数,购买高额彩票的人数很少,购买金额趋于长尾分布(power-law distribution or pareto distribution)。该分布的均值根据中心极限定理趋于稳定分布(stable distribution),而不是正态分布,故无法对其均值使用参数检验(Z检验或T检验)。然而样本数据又不是成对出现的,并且两个样本的大小不完全一致。在这种情况下,曼-惠特尼U检验是一个合适的选择,将两组样本的支付金额放在一起进行排序之后再分组,最后通过 $z$ 值得出结论。
Wilcoxon符号秩和检验
Wilcoxon符号秩和检验(Wilcoxon signed-rank test)。Wilcoxon符号秩和检验与曼-惠特尼U检验类似,都是通过秩和统计量的非参数检验。Wilcoxon符号秩和检验适用于当两组样本的个体都是成对出现的时候。
条件:每组样本相互独立,样本个体是有序的(两个个体可以比较大小,不能是categorical),样本是成对出现的(A组有一个个体,B组就有一个可以比较的个体)。
优点:不用假设分布和没有样本大小需求。
缺点:比参数检验要弱,对于真实存在差异的情况可能无法检测出显著性。
举例: 用10个数据集来测试两种算法,每个算法分别会在一个数据集上产生一个精度,则这两种算法在这10个数据集上的精度是否有显著差异?
计算:
检验零假设 $H_0 : $ 两个总体无显著差异。$N$ 为样本大小,因为样本成对出现,所以总样本大小为 $2N$。对于每一对 $i=1,…,N$,有样本观测值 $x_{1,i}$ 和 $x_{2,i}$ 。计算每一对观测值的差 $d_i$ 的绝对值和差的符号 $s_i$:
\[d_i=|x_{2,i}-x_{1,i}|\] \[s_i=sgn(x_{2,i}-x_{1,i})\]对 $d_i$ 进行升序排序,得到排名序列 ${r_1,…,r_N}$ 。如果存在某个 $d_i=0$ ,则删去这一对个体然后将N减1。如果多个样本的值相同,则他们平分他们所在的排名位置的和。例如,有4个个体并列第4名,则他们应该被排在4,5,6,7名,所以他们的排名都是5.5。然后可以计算W统计量:
W统计量就是符号秩和。在N足够大的时候,W趋于均值为0,方差为 $\sigma_W$ 的正态分布:
\[z=\frac{W}{\sigma_W}\] \[\sigma_W=\sqrt{\frac{N(N+1)(2N+1)}{6}}\]剩下的步骤就是单样本z检验问题。
业务案例:
某部门提出了一个改进的机器学习分类模型,想要在8个数据集上做离线测试,对比该模型是否与正在使用的旧模型在精度上有显著差异。两个模型在8个数据集上的效果如下:
旧模型 新模型 数据集1 0.85 0.90 数据集2 0.88 0.87 数据集3 0.75 0.81 数据集4 0.92 0.90 数据集5 0.86 0.93 数据集6 0.77 0.83 数据集7 0.83 0.91 数据集8 0.93 0.91 可以看出,旧模型和新模型分别赢了3次和5次,新模型并没有在8个数据集上都取得较好结果,该如何判断新模型是否比旧模型好呢?模型在数据集上的精度显然不服从任何分布,无法使用参数检验。但是数据是成对出现的,这时候就可以使用Wilcoxon秩和检验。
在此问题中,零假设 $H_0$ 和备择假设 $H_1$ 分别为:
\[H_0: 新旧模型精度无差异\\H_1: 新旧模型精度有差异\]我们可以先计算出新旧模型的差的绝对值 $d_i$,然后对其进行排序得到 $r_i$:
$d_i$ $s_i$ $r_i$ 数据集1 0.05 + 4 数据集2 0.01 - 1 数据集3 0.06 + 5.5 数据集4 0.02 - 2.5 数据集5 0.07 + 7.5 数据集6 0.06 + 5.5 数据集7 0.07 + 7.5 数据集8 0.02 - 2.5 其中 $d_4$ 和 $d_8$ 共享第2,3名,所以他们的排名为 $(2+3)/2=2.5$,同理 $d_3$ 和 $d_6$,还有 $d_5$ 和 $d_7$。通过上式得到 $W=4-1+5.5-2.5+7.5+5.5+7.5-2.5=24$,$\sigma_W=14.2829$。计算得出 $z=1.6803$。双侧检验p值为0.0930。所以结论为在置信水平 $\alpha=0.1$ 时可以拒绝 $H_0$,新模型与旧模型存在显著差异。
应用考虑
- 数据的分布(属于哪种分布,个体采样是否独立,样本是否来自同一分布)。
- 检验方法的使用条件。
只要确定了数据的分布形态,一般情况下都可以找到合适的统计检验来得出统计结论。
参考资料
[1] http://www.davidmburrow.com/whichtest.pdf
[2] https://en.wikipedia.org/wiki/One-way_analysis_of_variance#Example
[3] https://en.wikipedia.org/wiki/Mann%E2%80%93Whitney_U_test
[4] http://math.mercyhurst.edu/~griff/courses/m109/Lectures/sect8.4.pdf
[5] https://newonlinecourses.science.psu.edu/stat200/lesson/9/9.1/9.1.2/9.1.2.1
[7] https://newonlinecourses.science.psu.edu/stat414/node/268/
[8] https://en.wikipedia.org/wiki/Central_limit_theorem
[9] http://www.statisticshowto.com/sample-variance/
[10] http://www.kean.edu/~fosborne/bstat/07b2means.html
感谢腾讯高级研究员陈亮对本文的指点与修改。