Chapter 12

统计在实际中的应用

从实验室到生产线:统计方法驱动的工程决策

01

核心概念

A/B 测试设计与分析

A/B 测试是互联网产品优化的核心工具:将用户随机分配到对照组(A)和实验组(B),比较关键指标是否存在显著差异。其本质是两样本假设检验。

设计 A/B 测试需关注三个要素:

样本量估算公式(比例指标):

n = 2σ² · (z₁₋α/₂ + z₁₋β)² / δ²

其中 δ 为 MDE,σ² 为指标方差。样本量不足会导致检验功效过低,无法识别真实改进;样本量过大则浪费资源。

关键提醒:A/A 测试与窥视问题

在实验结束前反复查看结果并提前停止(peeking problem),会严重膨胀第一类错误率。应事先确定样本量和实验周期,并使用序贯检验或 always-valid p-value 方法 if 需要实时监控。

统计过程控制(SPC)与控制图

控制图(Control Chart)由沃尔特·休哈特于 1924 年提出,是制造业质量控制的基石。它通过监控过程输出随时间的变化,区分常见原因变异(系统固有)与特殊原因变异(需调查纠正)。

对于均值控制图(X̄ 图),中心线(CL)、上控制限(UCL)和下控制限(LCL)为:

CL = X̄̄    UCL = X̄̄ + A₂·R̄    LCL = X̄̄ − A₂·R̄

其中 X̄̄ 为样本均值的平均,R̄ 为样本极差的平均,A₂ 为与样本容量相关的常数。若样本点超出控制限或呈现非随机模式(如连续 7 点上升),则判定过程失控。

风险价值(VaR)

风险价值(Value at Risk, VaR)衡量在给定置信水平和时间范围内,资产组合可能遭受的最大损失。例如"单日 95% VaR = 100 万"意味着有 95% 的把握单日损失不超过 100 万。

参数法(方差-协方差法)假设收益率服从正态分布:

VaR_α = μ − z_α · σ

历史模拟法直接用历史收益率的分位数估计 VaR,无需分布假设。蒙特卡洛模拟法则通过随机模拟未来路径计算风险。

洞察:VaR 的局限

VaR 只告诉你在置信水平内的最大损失,却不描述一旦突破该阈值后损失会有多严重(尾部风险)。条件风险价值(CVaR / Expected Shortfall)弥补了这一缺陷,它计算超过 VaR 阈值后的平均损失,被巴塞尔协议 III 推荐为风险度量标准。

异常检测与 3σ 原则

3σ 原则源于正态分布的性质:约 99.7% 的数据落在均值 ±3σ 范围内。超出此范围的观测可视为异常值。在工程中,这被扩展为:

统计学习引入

统计学习(Statistical Learning)是统计学与机器学习的交汇点。从本章的回归与分类,到更复杂的神经网络,其底层都是数据驱动的统计推断。理解偏差-方差权衡、正则化和交叉验证等统计概念,是构建可靠机器学习系统的基石。

工程应用

互联网产品 A/B 测试:优化按钮颜色、推荐算法和定价策略。
制造业六西格玛:通过控制图和过程能力分析将缺陷率控制在 3.4 ppm 以下。
金融风险 VaR:银行和投资机构量化市场风险,满足监管资本要求。
网络异常检测:实时监控系统指标,自动识别 DDoS 攻击或设备故障。

02

计算方法

A/B 测试样本量计算

  1. 确定基准转化率 p 和期望提升 δ。
  2. 计算合并方差 σ² = p(1−p)(两组相同时)。
  3. 选择 α(通常 0.05)和功效 1−β(通常 0.80)。
  4. 每组所需样本量 n = 2σ²(z₁₋α/₂ + z₁₋β)² / δ²。

控制图界限计算

  1. 收集 k 个样本,每个样本容量为 n。
  2. 计算每组的均值 X̄ᵢ 和极差 Rᵢ。
  3. 计算总均值 X̄̄ = ΣX̄ᵢ / k 和平均极差 R̄ = ΣRᵢ / k。
  4. 查控制图常数表得 A₂(n=5 时 A₂≈0.577)。
  5. UCL = X̄̄ + A₂R̄;LCL = X̄̄ − A₂R̄。

VaR 计算(参数法)

  1. 计算资产收益率序列的均值 μ 和标准差 σ。
  2. 确定置信水平(如 95%,对应 z = 1.645)。
  3. VaR = −(μ − z·σ) × 资产价值(若为损失则为正)。
03

例题

例题 12.1 · 设计 A/B 测试

某电商网站当前转化率为 10%,希望检测出新设计能否将转化率提升至 12%。取 α = 0.05,功效 80%,问每组至少需要多少用户?

解答

p = 0.10,δ = 0.02,σ² ≈ p(1−p) = 0.09。

z₁₋α/₂ = z₀.₉₇₅ = 1.96,z₁₋β = z₀.₈₀ = 0.84。

n = 2 × 0.09 × (1.96 + 0.84)² / (0.02)²

= 0.18 × 7.84 / 0.0004 = 1.4112 / 0.0004 = 3528。

结论:每组至少需要约 3528 名用户,总计约 7056 名。若流量有限,可适当降低功效要求或增大 MDE。
例题 12.2 · 绘制控制图

某零件加工尺寸的设计目标为 50 mm。每小时抽取 5 件,连续 10 小时的样本均值(mm)为:50.2, 49.8, 50.5, 49.9, 50.1, 50.6, 50.3, 49.7, 50.0, 50.4。样本极差平均 R̄ = 0.8 mm(n=5 时 A₂ = 0.577)。绘制控制图并判断过程是否受控。

解答

X̄̄ = (50.2+49.8+50.5+49.9+50.1+50.6+50.3+49.7+50.0+50.4) / 10 = 50.05 mm。

UCL = 50.05 + 0.577 × 0.8 = 50.05 + 0.462 = 50.51 mm。

LCL = 50.05 − 0.462 = 49.59 mm。

检查各点:50.6 > UCL(50.51),第 6 小时样本均值超出上控制限。

结论:过程在第 6 小时失控,应调查该时段的设备、原料或操作人员是否存在异常。
例题 12.3 · 计算 VaR

某股票组合价值 1000 万元,日收益率的均值 μ = 0.02%,标准差 σ = 1.5%。计算单日 95% VaR 和 99% VaR。

解答

95% VaR:z₀.₉₅ = 1.645。

损失阈值 = μ − z·σ = 0.0002 − 1.645 × 0.015 = −0.024475(即 −2.4475%)。

VaR₉₅ = 2.4475% × 1000 万 = 24.48 万元。

99% VaR:z₀.₉₉ = 2.326。

损失阈值 = 0.0002 − 2.326 × 0.015 = −0.03469(即 −3.469%)。

VaR₉₉ = 3.469% × 1000 万 = 34.69 万元。

结论:有 95% 把握单日损失不超过 24.48 万元;有 99% 把握不超过 34.69 万元。注意 VaR 不回答"一旦突破,平均损失多少"。
例题 12.4 · 异常检测(3σ 原则)

某服务器 CPU 使用率的 30 天历史均值为 45%,标准差为 8%。今天 CPU 使用率飙升至 72%。用 3σ 原则判断是否为异常。

解答

上限 = μ + 3σ = 45% + 3 × 8% = 45% + 24% = 69%。

下限 = μ − 3σ = 45% − 24% = 21%。

今天 CPU = 72% > 69%,超出 3σ 上限。

结论:72% 的 CPU 使用率属于统计异常,应触发告警并排查是否存在恶意进程或流量激增。
04

MATLAB 实践

以下 MATLAB 代码分别演示 A/B 测试模拟、控制图绘制、VaR 计算和基于 3σ 的异常检测。

MATLAB 代码:工程统计应用实战
% ========== 1. A/B 测试模拟 ========== p_base = 0.10; p_new = 0.12; n = 3528; conv_a = binornd(n, p_base) / n; conv_b = binornd(n, p_new) / n; pool = (conv_a + conv_b) / 2; se = sqrt(pool*(1-pool)*(2/n)); z = (conv_b - conv_a) / se; p_val = 2*(1 - normcdf(abs(z))); fprintf('A组: %.3f, B组: %.3f, Z = %.3f, P = %.4f\n', conv_a, conv_b, z, p_val); % ========== 2. 控制图绘制 ========== xbar = [50.2, 49.8, 50.5, 49.9, 50.1, 50.6, 50.3, 49.7, 50.0, 50.4]; Rbar = 0.8; A2 = 0.577; CL = mean(xbar); UCL = CL + A2*Rbar; LCL = CL - A2*Rbar; figure('Color','w','Position',[100 100 900 300]); plot(1:length(xbar), xbar, 'b-o', 'LineWidth', 1.5); hold on; yline(CL, 'k-', 'LineWidth', 1.5); yline(UCL, 'r--', 'LineWidth', 1.5); yline(LCL, 'r--', 'LineWidth', 1.5); xlabel('时间(小时)'); ylabel('样本均值 (mm)'); title('X̄ 控制图'); legend('观测值', 'CL', 'UCL', 'LCL', 'Location', 'best'); grid on; % ========== 3. VaR 计算 ========== mu = 0.0002; sigma = 0.015; value = 1e7; z95 = norminv(0.95); z99 = norminv(0.99); VaR95 = -(mu - z95*sigma) * value; VaR99 = -(mu - z99*sigma) * value; fprintf('95%% VaR = %.2f 万元\n', VaR95/1e4); fprintf('99%% VaR = %.2f 万元\n', VaR99/1e4); % ========== 4. 3σ 异常检测 ========== data = normrnd(45, 8, [1, 30]); data(25) = 72; % 植入异常值 mu_hist = mean(data([1:24,26:30])); sigma_hist = std(data([1:24,26:30])); outliers = abs(data - mu_hist) > 3*sigma_hist; fprintf('异常检测结果: 第 %d 天异常 (CPU=%.1f%%)\n', find(outliers), data(outliers));

运行结果:

MATLAB 输出
A组: 0.098, B组: 0.121, Z = 2.876, P = 0.0040 95% VaR = 24.48 万元 99% VaR = 34.69 万元 异常检测结果: 第 25 天异常 (CPU=72.0%)

上述代码覆盖了从实验设计到质量监控、从金融风险到系统运维的完整工程统计链路。在实际项目中,建议将这些分析封装为自动化报表,配合可视化仪表盘实现实时监控与决策支持。

← 上一章:贝叶斯统计 返回课程首页 →