以后文章更新会先在微信公众号(公众号名:输出ING),欢迎大家来关注。

​前面Jeff专门介绍过A/B实验计算两样本比例是否存在显著差异的方法,但对两样本均值的显著性检验一直没讲到过。这主要有两个原因,一是平时工作中主要是对两样本比例类指标做检验,二是觉得两样本均值检验涉及到方差包括pooled variance等计算,看起来非常繁琐。

但近期了解到Welch's t-test,相比之前教科书介绍的Student's t-test,其t统计量的计算看起来更加简洁,检验的适用性也更强,因此准备再次回顾下这部分知识。

Welch's t-test简单介绍

如下图是Welch's t-test里t统计量的定义(来自维基百科):


Welch's t-test

而Student's t-tes里t统计量定义(来自维基百科),看起来就复杂很多,如下所示:

Student's t-test

不仅如此,Welch‘s t-test对于两样本大小不等、两样本方差不等等情况下的均值检验都很稳健,而对于两样本大小方差相等的情况下也可以与Student's t-test输出一样的结果,因此建议大家之后直接使用Welch's t-test做两样本均值的假设检验。

两样本均值检验实战

在线工具

类似前面介绍两样本比例检验有个在线工具可以辅助计算显著性,同样是之前这个网站另一个页面可以用来计算两样本均值显著性(页面末尾阅读全文可访问)。不过需要输入的东西不太一样了,支持两种方式输入:

  • 输入样本原始数值
  • 输入样本的均值、标准差、个数

第一种方式,A/B实验后把每组每个用户该指标原始数值跑出来,分别输入即可;第二种方式,可直接在SQL里统计出来,比如在HiveSQL,使用count、avg、sqrt、var_samp即可得到样本个数、样本均值、样本标准差。

这个在线工具用的就是Welch's t-test。

Python

Python常用的库scipy和statsmodels都可以做t-test。以下以statsmodel为例简单说明其用法:

from statsmodels.stats.weightstats import ttest_indttest_ind(group1, group2, usevar='unequal')

其中group1和group2是两个样本该指标的原始数值,usevar='unequal'表示两总体方差不等,将会使用Welch's t-test,如果不指定,默认方差相等,将会用Student's t-test。

R

使用R的话,不用安装其他包就可以直接做t-test,调用t.test即可,与Python里不一样的是,这里默认情况下使用的是Welch's t-test。

t.test(x = group1, y = group2)

如果需要用Student's t-test,需要显示指定方差是否相等:

t.test(x = group1, y = group2, var.equal = TRUE)

Excel

Excel 里有T.TEST这个函数,如果要跟上边的对齐,即用Welch's t-test做双侧检验,需要将第3个参数tails设置为2,第4个参数type设置为3。Excel中该函数语法为:

T.TEST(array1,array2,tails,type)

而array1和array2,输入两组用户原始数值的区域即可,如:

=T.TEST(J5:J5478,K5:K5924,2,3)

发表评论

电子邮件地址不会被公开。

Post Navigation