核心概念与数学基础:阈值、分层、分位数、百分位与累积分布函数

在开始编写 SQL 实现阈值分层试验之前,必须透彻理解支撑这一方法的五个核心概念。它们不仅是数学基础,更是后续 SQL 代码中 CASE WHEN 逻辑、NTILE 函数以及分组聚合的底层依据。

2.1 阈值(Threshold)

阈值是划分数据的分界点。在分层试验中,阈值将连续指标(如用户消费金额、页面停留时长)切割为离散区间,每个区间对应一个“层”。

  • 单侧阈值:如“大于 1000 元”为高价值用户。
  • 双侧阈值:如“500 元 ≤ 金额 < 2000 元”为中价值层。
  • 多阈值序列:一组有序数值将整体数据划分为多个连续区间。
SQL 映射:阈值直接对应 CASE WHEN value <= threshold1 THEN '层1' WHEN value <= threshold2 THEN '层2' ... END 中的边界值。

2.2 分层(Stratification)

分层是将总体按某个特征划分为互不重叠的子集(层),使得层内差异小、层间差异大。分层的目的在于:

  1. 降低抽样误差:每层独立抽样,保证各层在样本中的比例与总体一致。
  2. 提升试验灵敏度:在 AB 测试中,分层后组间对比更易检测出真实差异。
  3. 保证代表性:避免极端值集中在某一试验组。
分层方式 划分依据 典型场景
等宽分层 固定区间宽度 年龄分组(0-18, 18-35, 35-60)
等频分层 每组样本量相等 用户消费能力分档(各 20%)
自定义阈值分层 业务经验指定边界 RFM 模型中的高/中/低价值客户

2.3 分位数(Quantile)

分位数是将数据按数值大小排序后,将数据划分为若干等份的切割点。最常用的分位数包括:

  • 四分位数(Quartiles):Q1(25%)、Q2(中位数,50%)、Q3(75%)。
  • 十分位数(Deciles):10 个等分点,每份 10%。
  • 百分位数(Percentiles):100 个等分点,每份 1%。
SQL 实现提示:使用窗口函数 NTILE(n) 可将数据均匀分为 n 组,每组即为一个分位数区间。例如 NTILE(4) OVER (ORDER BY amount) 返回 1~4,对应四个四分位组。

2.4 百分位(Percentile)

百分位是分位数的特例,表示某个数值在全体数据中所处的位置百分比。第 p 百分位意味着有 p% 的数据小于等于该值。

百分位与阈值的转换关系:

百分位 含义 作为阈值时的分层效果
第 25 百分位 25% 的数据 ≤ 此值 区分低价值与中低价值用户
第 50 百分位(中位数) 50% 的数据 ≤ 此值 将用户等分为高低两组
第 90 百分位 90% 的数据 ≤ 此值 识别头部 10% 高价值用户

2.5 累积分布函数(CDF)

累积分布函数描述了随机变量小于或等于某个值的概率。对于经验数据,经验 CDF 直接由排序后的样本计算得出:

F(x) = (小于等于 x 的样本数) / (总样本数)

CDF 与百分位互为逆运算:

  • 给定数值 x,CDF 返回其百分位位置。
  • 给定百分位 p,CDF 的逆函数返回对应的阈值。
常见误区:百分位是位置指标,阈值是数值指标。例如“第 80 百分位”是一个位置概念,而“80% 分位值”才是具体的数值阈值。在 SQL 中,PERCENTILE_CONT(0.8) 返回的是阈值,而非位置。

2.6 概念关系总览

下图展示了五个核心概念之间的逻辑关系与数据流向:

阈值分层试验核心概念关系图 原始数据 排序后数据 分位数 / 百分位计算 阈值 CDF 分层 说明:分位数/百分位是桥梁,向上连接排序数据,向下输出阈值(用于分层)和 CDF(用于概率解释)。 分层是最终目标,阈值是切割工具,CDF 是验证分层合理性的诊断手段。

2.7 数学关系速查表

概念 数学表示 SQL 实现
阈值 \( t_1, t_2, ..., t_{k-1} \) CASE WHEN ... 中的常量
分位数 \( Q(p) = \inf\{x: F(x) \ge p\} \) PERCENTILE_CONT(p)
百分位 \( p = F(x) \) CUME_DIST() OVER(...)
CDF \( F(x) = P(X \le x) \) COUNT(*) FILTER(WHERE ...) / COUNT(*)
分层 \( S_i = \{x: t_{i-1} \le x < t_i\} \) NTILE(n) OVER(...) 或 CASE WHEN