
你是一家电商公司的数据工程师。产品经理跑来说“我把’立即购买’按钮从蓝色改成了红色转化率从 10% 涨到了 10.3%涨了 3%上线吧”你盯着这 3%心里犯嘀咕这 0.3 个百分点的差距到底是红色按钮真的更好还是刚好这两天运气好、随机波动这不是抬杠这是数据科学里最核心、也最容易被忽视的一个问题你怎么知道一个变化是真的而不是噪声回答它的工具叫A/B 测试A/B Testing以及它背后的一整套统计推断。这篇就把这套东西讲透。核心矛盾数据永远有随机性先建立一个最底层的认知你观察到的任何数据都带着随机噪声。同样是红色按钮今天测和明天测转化率不会是同一个数同样是蓝色按钮抽 1 万人和抽 1 千人结果也有波动。这不是 bug这是抽样这件事的天然属性——你看到的 10% 和 10.3%都只是真值的一个带噪估计不是真值本身。所以问题变成了10.3% 和 10% 之间的那 0.3%到底比随机波动大多少如果随机波动本身就有 ±1%那这 0.3% 的差距大概率就是噪声红色按钮根本没啥用。A/B 测试要做的就是用统计学把这个大概率变成有多大把握的精确数字。假设检验先假定它没用再找证据反驳统计学家处理这件事用的是反证法叫假设检验Hypothesis Testing。它先立一个靶子叫原假设H 0 H_0H0Null Hypothesis“红色按钮和蓝色按钮效果没有差别。”换句话说默认这 3% 是运气。然后问如果H 0 H_0H0成立两者真没差别我们观察到至少 3% 的差距这件事概率有多大这个概率就是大名鼎鼎的p 值p-value。把它说准确一点p 值 在原假设为真的前提下观察到当前结果或更极端结果的概率。如果 p 值很小比如 0.01意思是如果两个按钮真没差别我们几乎不可能看到这么大的差距。“可我们偏偏看到了。那结论只能是——原假设大概率是错的两者确实有差别。于是我们拒绝原假设”认为结果是**统计显著Statistically Significant**的。如果 p 值很大比如 0.4意思是就算两者真没差别看到这么大差距也很正常。那这 3% 就可能是运气我们不能拒绝原假设不能上线。业界常画一条线p 0.05就认为显著。这个 0.05叫显著性水平α \alphaα。p 值最容易踩的坑它 ≠ “效果是真的”p 值的概念被误用得太多这里必须踩一脚刹车p 值小只说明这个差距不太像运气绝不等于红色按钮真的更好、更值得上线。它至少有这几个局限p 值不衡量效果大小。一个几亿样本的实验哪怕红色只比蓝色好 0.001%p 值也能小到惊人。统计显著 ≠ 商业上有意义。真正要看的是效应量和置信区间——“差距到底有多大、范围多宽”。p 值会假报警。即便α 0.05 \alpha 0.05α0.05每 20 次本来没差别的实验里平均就有 1 次会假显著。做 100 个实验光靠运气就能撞出 5 个显著结果。这叫多重比较问题是数据挖掘出假结论的温床。p 值不等于红色比蓝色好的概率。它是在’没差别’假设下看到这数据的概率方向完全不同可惜太多人把两者划等号。两类错误宁可错过也别误杀说到假报警就不得不提假设检验里的两类错误这是理解显著性的钥匙现实无差别H 0 H_0H0为真现实有差别H 0 H_0H0为假我们的结论显著第一类错误假阳性“误杀”✅ 正确我们的结论不显著✅ 正确第二类错误假阴性“漏判”第一类错误Type I Error本来没差别我们却说有。概率记作α \alphaα就是显著性水平 0.05。第二类错误Type II Error本来有差别我们却没发现。概率记作β \betaβ。统计功效Power1 − β 1 - \beta1−β意思是当真的有差别时我们能把它测出来的概率。功效越大越不容易漏判。这里有个永恒的权衡α \alphaα和β \betaβ此消彼长。你想少误杀把α \alphaα调小就更容易漏判β \betaβ变大你想少漏判就得更容忍误杀。想要两个都小只有一个办法——加大样本量因为样本量越大估计越准两类错误一起降。这就是为什么 A/B 测试在跑之前要先算样本量给定你期望检出的最小效应、想要的功效通常 0.8和α \alphaα0.05反推出至少要多少样本。样本不够测了也白测。置信区间比一个数字更诚实p 值只能告诉你显著不显著但更专业的人更爱看置信区间Confidence Interval。回到按钮的例子与其只报涨了 3%不如报一个区间——“红色按钮相比蓝色转化率提升的点估计是 0.3%95% 置信区间是 [-0.2%, 0.8%]。”这句话的信息量比 p 值大得多区间包含 0-0.2% 到 0.8% 跨过了 0→ 说明红色可能更差也可能更好不显著区间整体在 0 的右侧比如 0.5% 到 1.2%→ 说明大概率是正向提升可以上线区间的宽度→ 反映了估计的不确定性样本量越大区间越窄。一句话p 值回答有没有差别置信区间回答差别有多大、多不确定。后者对做决策有用得多。手算一个例子把感觉变成数字光讲概念发虚我们手算一把感受下 p 值到底怎么来的。假设蓝色按钮对照组测了 1000 人转化 100 人红色按钮实验组测了 1000 人转化 110 人。红色比蓝色多了 10 个转化比例差 0.01。这算显著吗做法是算一个z 统计量两个比例的差异检验。设两组转化率分别为p 1 p_1p1、p 2 p_2p2合并转化率p ^ \hat{p}p^标准误S E SESEp ^ 100 110 1000 1000 0.105 \hat{p} \frac{100 110}{1000 1000} 0.105p^100010001001100.105S E p ^ ( 1 − p ^ ) ( 1 1000 1 1000 ) ≈ 0.0137 SE \sqrt{\hat{p}(1-\hat{p})\left(\frac{1}{1000}\frac{1}{1000}\right)} \approx 0.0137SEp^(1−p^)(1000110001)≈0.0137z p 2 − p 1 S E 0.01 0.0137 ≈ 0.73 z \frac{p_2 - p_1}{SE} \frac{0.01}{0.0137} \approx 0.73zSEp2−p10.01370.01≈0.73查正态分布表z 0.73 z 0.73z0.73对应的双侧 p 值约0.47。这个数比 0.05 大得多意味着即使两个按钮真没差别看到 10 人差距这种事也有一半概率发生。所以这 10 个转化大概率是运气不显著。如果红色转化了 130 人呢比例差 0.03z ≈ 2.19 z \approx 2.19z≈2.19p 值约0.028小于 0.05这时才敢说显著。看同样做实验结果差 20 个人结论天差地别。这就是显著性的意义它帮你在信号和噪声之间划一条有数学依据的线。那些让你测了也白测的坑A/B 测试看着简单实操里全是坑挑几个最要命的偷看Peeking实验还没跑完你天天打开后台看一眼显著了没一看显著就提前停。这是大忌——每多看一次第一类错误率就往上窜最后显著结果是假的概率远超 5%。正确做法是提前定好样本量和时长中途不偷看。新奇效应Novelty Effect用户突然看到红色按钮觉得新鲜多点了两下过两周新鲜劲过了就回落。所以实验要跑够时间别被开头的假繁荣骗了。辛普森悖论Simpson’s Paradox整体看红色更好可一拆分成新用户 / 老用户红色在每一类里反而都更差。这种合并看和拆开看结论相反的陷阱是数据人的必修课。实验不独立、互相污染两个实验同时改一个页面互相干扰谁的影响都分不清。这些坑的共同点A/B 测试的难点不在数学而在实验设计和纪律。工具谁都会用能不能忍住不偷看、能不能守住样本量才是真功夫。结语数据不会替你下结论只会给把握标个价回到开头产品经理那句涨了 3%上线吧。现在你有了完整的回答框架先问样本量够不够不够这 3% 就是噪声别聊了再问p 值多少、置信区间跨没跨 0没跨 0才谈得上显著最后问效应量多大哪怕显著0.3% 的提升值不值得为此承担改版风险是另一个商业问题。你会发现A/B 测试教给我们的远不止一个工具而是一种面对不确定性的态度世界上没有确定的结论只有在多大把握下、多大误差范围内的结论。数据科学的成熟就是从拍脑袋说涨了进化到带着 p 值和置信区间说涨了。搞懂这一层你才算真正入了数据的门。A/B 测试里的 p 值、置信区间、两类错误根子都在概率论和统计推断上。想把这些数学一次讲透推荐 B站【408实验室】的《机器学习数学基础》把概率、分布、假设检验的底子打牢——这是所有数据科学的根基。