# 实验工具实验管理

## 一、实验前必读

### 1.1 制定实验常见步骤

-  **提出问题** ：弹窗的转化率很低？
-  **实验假设** ：修改弹窗按钮的文案可以提高弹窗的转化率。
-  **实验策略** ：随机筛选两波用户作为对照组 A 和实验组 B ，对照组 A 展示线上文案，实验组 B 展示新文案，获取用户曝光点击行为数据。
-  **实验评估** ：判断实验组 B 的弹窗转化率是否有提高，如果提高实验假设得到了验证。否则需要提出新的实验假设进行验证。

### 1.2 了解实验指标

- 核心指标：实验重点关注的指标，每个实验只允许配置一个。
- 监控指标：实验观察的指标，一般来说实验不允许有负向。

### 1.3 常见实验名词解释

- 业务敏感度与建议样本量：业务敏感度是实验者想要检测的差异大小。
  - 比如想要检测 5% 以上的差异，那么业务敏感度就是 5%。业务敏感度设置的越小，需要的样本量越大。
    - 通俗来说就是需要更多的样本来检测更小的差异。目前平台的敏感度是固定值 10%。
  - 同时，平台在这个敏感度下计算出每个组的建议样本量。该建议样本量的含义是，要想检测出 10% 的差异，需要多少样本。如果实验结束时没有出现显著差异，则观察实验的用户数是否达到了建议样本量。
    - 如果是，则我们有 80%（统计功效）的概率说对照组与实验组无差异或差异小于 10%。
    - 反之，我们无法给出是否有差异结论，可能需要延长实验时间或增大实验流量。
- 置信区间`[a, b]`：目前实验平台在结果页面展示了 95% 的置信区间。这个区间的含义是指如果我们将这个实验做 100 次，得到 100 个置信区间，有大概 95 个左右的置信区间是包含总体的真实差异的。因此在实验组有显著提升时，实验者可以通过置信区间下界得到实验组提升的一个保守的点估计值。
  - a 和 b 都是负数，说明实验组相对对照组是下降的，如[-10%,-5%]说明有 95% 的把握认为策略上线之后实验组效果相比对照组至少下降 5%。
  - a 和 b 都是正数，说明实验组相对对照组是提升的，如[5%,10%]说明 95% 的把握认为策略上线之后实验组效果相比对照组至少提升 5%。
  - a 是负数，b 是正数（置信区间包含了 0），说明无法得出有效结论。
- 显著性水平：取值 0 到 1 的一个概率。含义是（以取值 5% 为例）：显著（B 组和 A 有差异）结论中，有 5% 的概率是错误的。或者理解为：实验系统认为有效果，但是有 5% 的概率上线之后没有效果。
这里需要权衡第一类错误和第二类错误，如果实验目的更在意不犯第二类错误，可以适当调高（第一类错误），比如实验是策略类，非 UI 体验的实验，降低第二类错误的最简单的方法就是提高显著性水平（增大第一类错误）。
- 业务敏感度：业务敏感度仅作为计算建议样本数使用。表示：需要检验 x% 差异最少需要的样本数，用来指导推算如果关注该指标，那么实验需要多少流量，需要多长时间。
- 统计功效：真实存在 x% 差异（业务敏感度）时，正确检验出来的概率。
  - 当实验的 p 值显著时，power 越大，越能说明真实的总体差异接近或者大于 x%；
  - 当实验的 p 值不显著时（以统计功效 0.8 为例），power = 0.8 时，大概率是实验没有效果。
- 获胜概率阈值（针对 T+1 实验）：实验组均值大于对照组均值的后验概率大于阈值时，实验显著。
- 层概念：设计层主要是为了流量复用，根据不同实验之间是否能复用流量，实验平台有如下两种分流方式。
  - 分流方式一：不同的实验之间流量不能复用。此时你想测试按钮字体颜色的影响，开了一个实验，用掉了 50% 的流量。你还想测试按钮背景色的影响，又开了一个实验用掉了剩下 50% 的流量。因为流量不能复用，此时已经没有空闲流量来给你做新的实验了。
  - 分流方式二：不同的实验之间流量可以复用。那平台分流方式可以这样，每次都从大盘随机选取一部分流量来做实验。比如从大盘中随机抽取 50% 的流量，开一个按钮字体颜色的实验 A。然后再从大盘中随机抽取 50% 的流量，开一个更改按钮背景色的实验 B。A 和 B 的流量存在重叠（存在用户同时命中了实验 A 和 B）。如此，理论上可以开无限个实验。

  上面两种分流方式都存在一定的问题。分流方式一的实验数量会受到限制，流量不能重复使用，总共就 100%，用完了就没了。分流方式二可以开无限个实验，但流量完全复用，实验之间可能会相互干扰，比如实验 A 的实验组按钮字体颜色是白色，实验 B 的实验组按钮背景色是白色，一个用户可能同时命中了实验 A 的实验组和实验 B 的实验组，此时他看到按钮的字体颜色和背景颜色都是白色，这样就出了问题。

  为了尽可能同时开更多的实验，同时减少实验之间的干扰，平台引入了层的概念。由此而来的分流方式如下：

  - 分流方式三：你可以创建很多层，这些层是一个个摞起来的。每个层都包含大盘的 100% 流量。实验是在层内创建的，一个实验只能属于一个层，一个层内可以创建多个实验。同一层内的不同实验流量是不能复用的（相当于分流方案一，通常称作流量互斥），不同层流量分配是复用的（相当于分流方案二，实现上不同层是完全随机复用，不会相互影响，通常称作流量正交）。

  用盖高楼类比。平台创建一个实验层相当于楼又加高了一层。判断一个用户命中哪些实验要从一楼往上走，走完所有的楼层。先进入一楼（第一层）判断命中了这个层里的哪一个实验，最多只能命中一个，也可能一个都不命中。之后进入二楼，在二楼是否命中实验与命中哪一个实验不受第一层的影响，也不会影响后续的楼层。

  有了层的结构之后，你就可以把有相互干扰的实验创建在同一层，比如上面说的按钮字体颜色与背景色，把他们放到同一层，一个用户最多只能命中其中的一个实验，就不会出现字体和背景同色的问题。而把相互独立的实验放到不同的层来复用流量，来实现同时开更多的实验。比如后台的排序策略实验和前端按钮颜色实验，这两个实验就可以放到不同层里来复用流量。

  再来总结以下，实际上分流方式一和分流方式二是两个极端。分流方式一相当于整个系统只有一层，分流方式二相当于有无数层，每个层内只做一个实验。而分流方式三是两者折中。平台无法预先知道你们的实验是否有相互干扰，所以才把层管理暴露出来。

  ![](https://res.wx.qq.com/op_res/uKWd2NY8vauw1iddSeZ-EZudPwdFVG8GEVMkkyPbt6_7DTLwqGE3G6an1DXAxwNoiBmn0tw79XcvKFYkFQwsJA)

### 1.4 实验 FAQ

1. 为什么指标结果没数据？
    - 实验没有发布。创建完实验需要发布实验，才可能在第二天观察到数据。
    - 实验上线的当天无数据。指标数据是按天更新的，上线后的第二天才能观察到数据。
    - 实验的各组流量为 0。这种情况下，不会有用户命中实验。请确保发布的小程序调用 `wx.getExptInfoSync` 接口。

2. 实验要运行多久？

    建议实验至少运行一周。原因如下：

    - 实验时间过短，容易因新颖性导致误判。对于一个新功能，用户可能会因好奇心而使用，即使用户不喜欢这个新功能。这种场景下，可能会出现指标刚开始几天上涨，之后下降。因此应增加实验时间，避免因新颖性导致的误判。
    - 不同的时间可能会影响用户的行为。比如工作日与周末，用户的表现可能不一样。因此，应分析产品的周期性，实验运行时间应尽量包含一个周期。

3. 为什么实验有效果，全量上线后没效果？

   第一类错误。实验平台使用的是统计学中的假设检验方法。在这种方法框架下，第一类错误是无法避免的。具体的含义是两个组不存在差异的情况下，平台仍旧可能给出两个组有显著差异的结论。这种情况出现的概率是 5%，大概每 20 次出现一次。

    - 指标结果中展示的是样本的提升，上线之后，有一定的概率会出现总体的提升小于样本的提升。建议关注指标结果中置信区间的下界值。

4. 为什么不能每天查看实验结论，有显著提升就上线？

   会放大第一类错误。正确的实验方法是：实验前需要确定好实验时间，只依据实验结束时间时的结论做决策。

   此时，实验平台能够保证第一类错误率控制在 5%。如果实验者每天查看实验结论，有显著就停止实验并作出有差异的决策，那么会放大第一类错误。

   > 举个例子，在两个组完全无差异的场景下，用户连续观察 7 天，一旦出现显著差异，就上线，那么做 100 次这样的实验，会有超过 30% 的实验出现第一类错误（准确的第一类错误为：1 - ( 1 - 0.05 )^ 7）。

## 二、新建 A/B 实验

1. 进入实验看板，实验看板主要由实验规模概况和实验列表两部分组成。

    - 实验规模概况：查看某一实验层正在实验的用户数和可实验的用户数，方便用户判断当前层可用实验流量。
    - 实验列表：查看创建实验的情况以及可以新建实验。

    ![](https://res.wx.qq.com/op_res/ykVXf1E1cFvUrbUqlLCTMrDf_LNN68Lz7qM6YgGP3ZCIKKmqNrm3z4TEULUaHBFCRPW8uHklS7k1LrinMpkVjg)

2. 新建实验

   ![](https://res.wx.qq.com/op_res/eGAxovr6iUHpLb2Qc_8ZwXDaBAUSmOWV7SvOTxHK3xRbmDhloouS4u1SQsYw7JvdBi7O2JM-x5szdI2XhUV3qw)

   - 基本信息
      - 统计周期
        - 1 天：1 天可查看实验结论，可快速检测差异较大的实验。
        - 7 天：7 天可查看实验结论，实验结论更准确，所有实验都适用。

    - 实验指标 
      - 核心指标
          - 实验重点评估的指标，实验结论主要也是依赖核心指标效果来评估。
          - 系统默认提供了小程序关键指标，用户可以根据实验需要选择作为核心指标。
          - 用户也可以自定义一些指标，过程详见【指标管理-指标创建】。
      - 监控指标
        - 辅助观察实验效果，建议用户一次选择观察指标不超过 10 个，具体指标创建详见【指标管理-指标创建】。
     - 实验流量
        - 实验层级
          + 选择创建的实验层，不同层流量是正交的，可实现流量复用（同一个用户同时命中多层的实验）。单层流量不足可添加分层。
          + 设置实验总流量比例，各个实验组将均分流量。
        ![](https://res.wx.qq.com/op_res/duntqBlFn6-6-nqB833qJAW9jrxdtyd3gtIREW-GUxqIJNhmsgD8gp8hsUpd6f5lkdAWN2SZ8VM8y3iIgZ-MIw)

        - 实验人群
          - 随机人群：对照组和实验组随机挑选人群。
          - 定向人群：限定画像再随机挑选人群。支持设备、小程序新老用户、自定义人群定向。
        - 实验参数
          - 实验参数是用于区分实验的唯一标识，请务必确保实验参数的唯一性。
          - 实验参数为字符串，主要用来控制用户的实验分组（根据不同的参数值确定用户分配到哪个实验组）。
        - 实验参数通过基础库接口 `wx.getExptInfoSync` 获取参数值，并执行不同实验逻辑，具体见【实验接口】。
        - 实验分组
          - 设置实验参数值，以便于开发同学区分对照组和不同的实验组
          - 设置「测试微信号」（提交实验即生效，不需要发布实验）。
          - 用「测试微信号」测试
              + **开发版、体验版** 上测试（建议使用）
              + 在 [开发者工具（1.05.2106292 以上版本）](/miniprogram/dev/devtools/download.md)且高于`2.17.1` 的基础库上测试，如获取不到重新编译运行即可。

* 提交实验

  + 可以在实验列表里面看到创建的相关实验。

3. 发布实验

    发布实验后查看实时命中用户是否正常。

   ![](https://res.wx.qq.com/op_res/rF_w_iZOhM7XtI_FReUlc9_XMMmavjJFWiN9HLWGZdrnEASiVeF814O_yctyg4xu-BEvxonzBDSXx9qFDFpmIQ)

   ![](https://res.wx.qq.com/op_res/OKPZvoKnvt5iMSFWLAAvJMEk06i4irUyhvz50cSbg_I-s9ne8J1OxxjNj2stOd3AxvhoBFCNy6yhhlMw9VHp7g)

4. 修改实验

    - 待发布实验可修改实验总流量比例、指标、实验组等
    - 进行中实验只支持修改实验总流量比例，各个实验组将均分流量，满足实验流量灰度功能

    ![](https://res.wx.qq.com/op_res/_oauVp7BzT3nPIipX8BhMqny_jymU0TpP-GmcG_ztr5E8Q0EGuXPDptC3p63E_vIVMnLqvKXo3ybg-deh1t1Jg)

5. 全量实验

    如果实验效果显著，可将某个实验组全量到线上，不需要小程序发版；全量后支持撤销。


    ![](https://res.wx.qq.com/op_res/E07ofmhhd4a0asKyA-bOdEg0SmznJSt8nwy8jZbZ4ZJ8jjYs2S2fTMfc6mRJ2u4y5EJnTaI04JECwq-cYKbK1g)

     ![](https://res.wx.qq.com/op_res/mtFDZykGZN7AU6b83CF_Nbrz5p08oGF7iFmkzKg6pB9g74TKtwvs8Ql6zuw3orTLDbUNOujFU-ODLjazZxuMSA)

## 三、实验解读

创建实验完成之后，进入实验数据 tab 查看实验结果数据，实验结果主要包含：

+ 指标趋势图：提供离线指标的日度趋势图和命中用户数的实时趋势图。
+ 总体数据：提供累计命中用户数以及各个指标实验组和对照组的效果分析。
+ 核心指标：核心指标详细信息，提供计算的分子、分母以及置信区间。
+ 实验结论：实验运行超过 7 天（包含 7 天），系统会自动提供实验结论，帮助用户判断实验效果。
+ 人群分析：可以限定人群（目前系统提供人群性别、地域和设备）对实验结果进行进一步分析，挖掘不同人群的实验效果。

### 3.1 指标趋势图

  ![](https://res.wx.qq.com/op_res/IdToFHzxo4_-7xDeMU7pFaufecp_Yd-tO-ZyXtwP9dWl1sFc0T2lVDtjoVNLpv6VeeG3QCcfFtpTjtlk6XCoCg)

* 数据周期
  + 过往数据：离线指标数据，按天更新。
  + 实时数据：目前暂时提供命中用户的实时命中信息，更新频率为 10 分钟。

### 3.2 总体数据

  ![](https://res.wx.qq.com/op_res/aOHIT__HWycpN8TWwVhxHGoX2uWeL6BKCgKlMnvtVHGYcsk2rsWP2orhiL8o5y62orMVyAtGR_OfgsyfDvPjsA)

 + 累计命中用户数：各个组从实验上线到当前累计命中用户数，流量均匀前提下各个组累计命中用户数应该是很接近的。
 + 核心-指标：提供核心指标统计数值以及实验组相对对照组提升的比例，提升如果正向显著会用绿色标记，负向下降显著会用红色标记。
 + 监控-指标：解释同核心指标。

### 3.3 核心指标

  ![](https://res.wx.qq.com/op_res/kRtC7l8ZvTdiyGOvnyW_8CzjqejoB8O1dCFbCfeJEfGCndr_zbJwqeLlv4VlYGzsBaLd1z-W9ArM_LDX5FvI9g)

 + 推荐样本量：详细解释见【实验管理-实验前必读-常见实验名词解释】。
 + 置信区间：详细解释见【实验管理-实验前必读-常见实验名词解释】。

### 3.4 实验结论

  ![](https://res.wx.qq.com/op_res/feMQkokZnalSkv30bsKzjm68z6CSV_kYIScaJX6jab0dZPux99bLkP0lPEVeXsV-z_8Fiu9P2ckxYT1McSfdXQ)

   * 实验结论前提
     + 运行超过 7 天（包含 7 天）。
     + 各个组流量同质：不同质会提示流量不同质，建议重新做实验。

   * 实验结论分类
     + 正向：核心指标正向，观察指标无负向。
     + 正向待观察：核心指标正向，观察指标有负向。
     + 负向：核心指标负向。
     + 无效果：核心指标不显著，且命中用户数大于等于推荐样本量。
     + 无法下结论：核心指标不显著，且命中用户数小于推荐样本量。
