# 指标、图表和实验怎样回答同一个问题

原文: https://yishto.com/learn/data-practice/metrics-analysis-and-experiments/

作者: [Yishto](https://yishto.com/about/)

以课程目录的合成数据说明指标分母、缺失、延迟分布与实验分配，区分描述性差异和能支持决策的证据。

首次发布: 2026-11-10
内容更新: 2026-11-10

资料站想知道新的课程目录是否更容易使用。页面点击次数增加，可能是用户找到课程，也可能是迷路后反复点击。先确定需要回答的决策，再定义事件、统计口径与比较方法，图表才会提供可以解释的证据。

本例把“进入课程后完成第一项练习”作为待研究行为，用合成结果说明分母与缺失值。另用五个延迟数值比较均值和中位数。所有数据用于教学，不构成某个真实产品的效果报告。

## 把指标写成完整定义

一个转化率至少要说明人群、单位、开始事件、成功事件和时间窗口。例如统计被分配到目录实验的用户，在首次进入后的一段固定时间内是否完成练习。分子是完成用户数，分母是符合纳入规则的用户数；同一用户多次点击不能随意增加人数。

窗口之外的结果、未完成的观察和采集缺失要分别处理。缺失不等于失败，删除缺失也可能产生偏差。若网络较差的用户更容易丢失事件，已知结果的比例就不能代表全部用户。报告时同时给出总样本、已知结果与缺失数量。

每个指标还应注明单位、过滤条件、时区和版本。前端点击、后端任务完成和实际业务完成是不同事件。多个团队使用同名指标时，应共享定义与查询版本，否则数值差异可能来自口径，而非用户行为。

## 均值、中位数与分布分别描述什么

均值是数值总和除以数量，会受到极端值影响。中位数按排序后的中间位置计算，更能反映偏斜数据中的中心位置，但也不会显示尾部发生了什么。若关心慢请求，应同时查看适当分位数、超时比例和样本量。

Python statistics 文档给出这些计算的明确语义。偶数个值的 median 通常取中间两项平均，结果未必出现在原数据里。空数据应报告无可计算结果，不能用零假装平均时间。涉及缺失、非数值与无穷值时，还要先定义清洗规则。

下面把一次 200 的慢请求保留在数据中。转化结果里的 None 表示未知，仅计算已知子集，并明确保留这个限制。

```python
from statistics import mean, median
latencies = [10, 12, 14, 16, 200]
assert median(latencies) == 14
assert mean(latencies) == 50.4
outcomes = [True, False, None, True]
known = [x for x in outcomes if x is not None]
rate = sum(known)/len(known)
assert rate == 2/3
print(mean(latencies), median(latencies), len(known), rate)
```

实际输出是 `50.4 14 3 0.6666666666666666`。均值为 50.4，中位数为 14，说明这一组教学数值中尾部值拉高了均值。已知结果三项，两项成功，所以已知子集比例是三分之二。它不是四个对象总体的确定转化率，也没有统计检验。

## 图表编码应服务于比较

横轴、纵轴、单位与分组含义需要清楚。比较目录 A 与 B 的比例时，使用一致尺度，并展示分母。只画成功次数会受到流量差异影响；柱形图截断坐标轴可能放大细微变化。分布图或按日期曲线则回答不同问题，不应把图形样式当作结论。

Vega-Lite 用声明式规格描述数据、mark 与编码，适合把图表规则作为可审查的配置。工具能够渲染图，不会替作者决定指标含义、过滤条件或因果关系。图表旁要保留计算口径与数据版本，方便复核。

在汇总前检查分组。新用户与回访用户的占比变化，可能让整体指标向上，而每类用户的结果都向下。这类混合效应需要查看分段与样本分布。分段用于理解机制，事后寻找最好看的小组再宣称实验成功会增加误判机会。

## 随机实验从分配单位开始

A/B 实验需要把相同类型的单位随机分配到方案，且同一单位保持一致分组。按用户分配与按会话分配会产生不同干扰：一个用户若看到两种目录，学习效应可能影响比较。选择分配单位时要说明共享设备、协作与跨端访问如何处理。

实验开始前确定主要指标、保护指标、最小值得关注的差异、样本量与分析计划。保护指标可以检查错误率或任务耗时，避免转化提高却让服务更差。不能只根据“B 比 A 高两个百分点”推断可靠胜出，还要考虑抽样不确定性与实验设计。

反复查看结果并在刚好显著时停止，会改变误判概率。固定观察计划与适当统计方法需要事先确定；连续监测方法也有前提，不能靠换一个名称免除设计。样本过少、分配失衡和事件漏记应先调查，再解释结果。

## 分清统计问题与产品判断

现有 NIST 页面介绍 Levene 方差齐性检验，它回答不同组方差是否一致的统计问题。它不是均值或中位数教程，也不是判断目录转化胜负的通用方法。选择检验应基于数据类型、假设与分析目标，而不是看到一个统计公式就套用。

统计上可检测的差异也未必值得开发与维护成本。反过来，结果不显著可能表示样本不足，不能直接证明两种方案完全相同。应报告估计值、不确定范围和已知限制，并说明下一步是继续采样、修复采集还是停止方案。

相关性图能发现同时变化，无法单独证明因果。节假日、来源渠道与推广活动可能共同改变指标。随机化减少某些混杂，但执行错误、参与者干扰和流失仍会削弱解释，需要实际检查。

计算流程应保留从原始事件到去重、筛选、分组与聚合的顺序。若先按事件算比例，再对用户去重，结果可能和用户级指标不同。抽取几条记录手工核对每一步，检查查询实现与定义是否一致；公式正确仍可能因为单位或过滤顺序错误而回答了另一个问题。

## 练习：完成可复核的分析说明

为课程目录写一份分析计划，明确人群、分配单位、成功事件、窗口、缺失处理与主要指标。生成两组教学事件，保留已知成功、已知失败和未知结果，分别报告分母与比例，并展示延迟分布。

验收时，同一单位不会混入两组；重复事件不重复计数；缺失不会悄悄变成零；图表与表格使用同一口径。检查空样本、全部未知与一个极端延迟，结果应符合预先定义。结论必须区分描述性差异与实验推断，并解释还缺哪些条件才能支持产品决策。

## 资料来源与延伸阅读

- [NIST: Levene test for equality of variances](https://www.itl.nist.gov/div898/handbook/eda/section3/eda35a.htm)
- [Vega-Lite visualization grammar](https://vega.github.io/vega-lite/docs/)
- [Python statistical functions](https://docs.python.org/3/library/statistics.html)

资料核验：2026-11-10。教学示例不代表线上实测。

## 相关文章

- [大模型评测：用任务集比较质量、延迟与成本](https://yishto.com/learn/models/model-evaluation/)
- [项目：设备采样数据与趋势面板](https://yishto.com/learn/project-labs/lab-sensor-data-dashboard/)
