一句话回答
缩尾处理(Winsorization)是限制离群值影响的方法:把超出某个百分位(比如高于第 99 百分位)的值替换成该百分位上的值,所有数据点都保留,但极端值不再主导平均数。
公式: x_w = min(max(x, P_low), P_high)
什么是缩尾处理?
缩尾处理(Winsorization)是压住极端值,而不是删掉它们。选一个百分位,比如第 99 百分位,把所有比它大的值都替换成第 99 百分位上的那个值。每一行数据都还在,只是极端值不再主导平均数。这个名字来自生物统计学家 Charles Winsor。
x_w = min(max(x, P_low), P_high)
大多数业务指标只在一侧有长尾(收入、会话时长、每单件数),所以通常只处理上端。
计算示例:客单价
十笔订单(示例数字):$22、$30、$35、$40、$45、$47、$55、$60、$80、$921。
| 原始 | 在第 90 百分位缩尾 | |
|---|---|---|
| 最大值 | $921 | $80 |
| 平均(客单价) | $133.5 | $49.4 |
| 中位数 | $46 | $46 |
一笔批量订单让原始平均值接近中位数的三倍。把它压到第 9 个值($80)后,平均值能代表一笔典型订单,而这笔大单仍然被当作一笔大单计入。(只有十个值时第 90 百分位很粗糙;真实数据里,应该在上千笔订单上用第 99 百分位。)
缩尾、截尾和对数变换
| 方法 | 极端值怎么处理 | 样本量 | 适合 |
|---|---|---|---|
| 缩尾 | 拉回到上限 | 不变 | 长尾指标的均值和检验 |
| 截尾 | 删除 | 变小 | 截尾均值、稳健的汇总 |
| 对数变换 | 压缩 | 不变 | 对乘法效应建模 |
| 中位数 | 不受影响 | 不变 | 描述典型值 |
怎么选上限
- 收入和时长先用第 99 百分位;样本小或长尾极端时用第 95 百分位。
- 在合并后的数据上算上限,不要每个对比组各算一个,否则各组被压的程度不同。
- 看结果之前就定好。 挑一个能得出你想要答案的上限,属于 p 值操纵。
- 写清楚。「每用户收入,第 99 百分位缩尾」让读者知道看的是什么。
什么时候不该缩尾
- 极端值真实而且重要时:企业大单、游戏里的大 R 玩家、欺诈。
- 报告实际总数时(给财务的收入不能缩尾)。
- 极端值是埋点错误时。一笔本该是 $921 却记成 $92,100 的订单是数据质量问题,要在源头修好。
在 TapCub 里找百分位
对数值属性(比如订单金额)做分布分析,会显示每个分桶的数量和占比,以及均值和中位数;自动分桶的上限是第 99 百分位,更大的值都落在最后一个桶里。这个桶告诉你按 P99 缩尾会影响多少个值。会话时长、每次会话页数也能直接在分布分析里看。要算缩尾后的均值,导出原始数据,在表格或 notebook 里处理。另见百分位数,以及另一种降低方差的方法 CUPED。
相关阅读
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
