要选择的指标(metric)。对于点击率这样的指标,我们可以计算方差,但一些其他的指标我们不好计算方差的,比如销售额,可能符合 perato distribution,实验组与对照组的销售额差值不好确定符合什么 distribution,我们可以做 AA 测试计算方差。Anyway,我们测定了指标的方差之后,方差越大的我们定义指标变化最小接受阈值(practical significant)就越困难(超了或者没超这个阈值都很有可能是随机发生的)。那么我们可以通过增加样本量来增加指标的稳定性,减少方差(比如实验是投硬币十次,指标是正面朝上的比率,波动很大,我们可以投硬币一百次算正面朝上的指标,这样更好设定最小阈值)。
unit of diversion 和 unit of analysis。我们在实验分组和定义指标的时候一般可分几个维度:事件维度,event based,即发生一次事件,比如页面产生了一次浏览或者按钮被点击了一次,就算一个事件;用户维度,可以用 cookies 或者 user_id 来区分用户。我们在 AB 实验分组的时候依据的维度,比如用户 cookie 维度,按照不同的 cookie 来分组,这个叫 unit of diversion。和我们定义指标的维度,比如点击率:去重的用户数/点击页面用户的总数,也用用户 cookie 维度,这个叫 unit of analysis。这两个 unit 一般会取一样的维度,但也有一些情况,为了计算的简便,或者追踪用户的 learning effect,或者度量用户体验等原因,我们会设定这两个 unit 不一样。比如我们分组的时候用的用户维度的 cookie,但在指标计算的时候为了简便我们直接用 event based 的指标,如点击按钮的次数/点击主页面的次数。这时候我们通过正态分布统计学这种计算的方差(analytical variance),就会比实际的方差要小。因为我们是按照用户(cookie)分组的,组内的 events 互相间有很强的关联性。可以理解成,比如掷骰子,人们分成两个组,但组内的人行为很接近(就像 AB 实验中 events 的行为很接近因为来自同个用户),第一组有个人掷出了 5,就有很多人也大概会掷出 5 左右的数字,而第二组有个人掷出了 2,就会有更多人也掷出了很小的数字,这导致了两组的方差比随机的情况要大。所以当 unit of diversion 和 unit of analysis 不一致的时候,方差很大,我们需要更大的样本量。还有一点要补充的是,相反的情况,即分组时依据的是事件维度(events)但设定的指标是用户维度(比如 user_id 或者 cookie),这种情况一般是不行的,因为这样的话指标中同一个用户可能会来自不同的组,计算逻辑混乱不可信。除了这种为了计算简单的情况,还有的时候我们想研究客户的 learning effect 或者体验,就可能把分组依据定成 user_id,但指标可能还是 cookie 或者 event based 的。还有一点要注意的是在选择 user_id 做为分组依据(unit of diversion)的时候,可能需要极多的数据而变得不切实际。选 100 个 cookies 和选 100 个 user_ids 所需要的数据总量差很多。
5. 在 B 站上刷视频,有个叫小羊搬砖的好像如果没记错的话字节的数据分析做 AB 测试,介绍过一个叫反转实验的东西,就是对于这种情况,实验已经结束了,可以再做一个实验,用小流量比较长时间的运行,下线之前上线的功能,来测试相关指标是否向不好的方向变化。要注意的是选取人群的时候要选新用户,特别是对于一些用户可见的功能,不然老用户看到功能下线了会抓狂。小流量长时间,一方面是不想很多人都不能体验新功能,还有就是舆论,如果被发现曝光网上广为流传,影响也不好。
这牵扯到了 learning effect 的相关问题。说的就是在刚上线一个功能的时候,和过一段时间以后,用户的活动与反应发生了变化。可能是一开始觉得,瓦槽真好玩这是啥啊然后疯狂点击,也可能是一开始很厌恶但随着时间就习惯了。在设计实验阶段,我们一方面可以通过人群的设置来更好的衡量 learning effect,也叫做 cohort analysis,即一般我们分配人群是按照年龄啦地域啦兴趣啦等等,这种叫 population,但在实验的过程中,可能会用人从外国来到中国、年龄增长等等导致我们的 population 进进出出发生变化。我们可以进一步细化 population 的定义,比如注册时间和活跃频率维度上,选取过去半年或者更久都在中国的人,注册时间大于一年,活跃频次一周登录三次以上的等等,这样在我们想要衡量 learning effect、用户留存率、研究用户行为 等情景很有用。但也要注意到这需要更复杂的计算,更大的样本量以及可能会产生的对指标方差的影响(参见第三个问题)。在衡量 learning effect 的时候就可以选择新注册的用户分配到实验的两组中。在 Google,还有一些更 advance 的方法来衡量 learning effect,即所谓的 pre-period AA test 和 post-period AA test。在上线 AB 实验之前先做个 AA 实验,以测试系统的稳定性和指标的方差。在实验之后再做一个 AA 实验,如果之后的 AA 实验中,指标的方差明显变大了,则可确定是由用户习惯的改变带来的。