二项分布实战:从伯努利试验到A/B测试与质量抽检
发布时间:2026/10/30 7:26:11 锦皓数字建站

做数据分析这行久了总会碰到一类问题特别像某条产线抽检了20个产品坏了3个整批货的合格率到底怎么判某个投放素材给1000个人看下了38单这个转化率是真的比另一组高还是运气好某款新药给50只实验对象用12只有效能不能说它比对照组的8只有效更好。这些问题表面看八竿子打不着底层却是同一个模型在支撑那就是二项分布——描述在n次独立重复的伯努利试验中成功次数的概率分布。你把这个模型吃透了上面这一串问题就都能落到同一套语言里用同一套计算流程去回答。我写这篇东西不是想把教科书上的公式再抄一遍。概率论教材讲二项分布通常三行公式配一张钟形图就过去了但真正上手做业务判断的人会发现坑全在公式外面n怎么定、p从哪来、算出来的数怎么解释、什么情况下这个模型根本不适用。这些内容分散在各种项目笔记和踩坑记录里很少有人系统整理。所以下面我按自己的习惯把二项分布从“零件拆解”到“手算验证”再到“代码实操”和“翻车现场”完整走一遍中间穿插参数选择的判断依据和可以直接抄走的Python代码。适合谁看刚接触统计推断的分析师、需要做抽样判定的工程和质检人员、准备面试的应届生以及所有被“这个概率到底怎么算”卡住过的朋友。哪怕你数学底子一般只要能看懂乘法和加法这篇就能带你走通。1. 先把二项分布拆成三个零件来看很多人记不住二项分布是因为一上来就盯着那个带组合数的公式看越看越晕。我的建议是先别管公式把名字拆开。二项分布这个名字里藏着三个必须同时成立的前提任何一个不成立整个模型就塌了。这三个前提分别是每次试验只有两种结果伯努利试验、每次试验彼此独立、试验次数固定为n。下面逐个说说清楚了你再回头看公式会发现公式其实是在“数数”。1.1 伯努利试验一切从一次“是或否”开始伯努利试验这个词听着唬人本质上就是一次只有两种可能结果、且两种结果概率固定的随机试验。抛一枚硬币看正反面、检查一个零件是否合格、用户点开页面后是否下单、一次投篮是否命中——这些都是一次伯努利试验。注意两个限定词“只有两种”和“概率固定”。如果一次试验有三种以上结果比如掷骰子看点数那它就不是伯努利试验得换成多项分布如果两种结果的概率每次都变比如从一批货里不放回地往外抽每抽一个次品率都会变那也不符合伯努利试验的固定概率要求。这里有个特别容易被忽略的点两种结果不代表两种结果的概率必须是0.5。p可以是0.03也可以是0.87只要它每次保持不变就行。我见过不少人下意识觉得“二项分布就是五五开”这是把二项分布和最基础的对称情形搞混了。实际上工业场景里p往往很小比如千分之几的不良率这才是二项分布最常见的用武之地。把一次试验的结果记成1成功和0失败成功的概率记作p失败的概率自然就是1-p这一次试验的期望是p方差是p(1-p)——这两个数后面加总的时候会用到。1.2 独立重复为什么“每次都不受上一次影响”这么关键独立这个词在纸面上看就是“互不影响”但落到实际业务里它是最容易被违反、也最难被察觉的一条。独立的意思是第i次试验的结果不会改变第i1次试验成功的概率。抛硬币天然满足因为硬币没有记忆。但很多真实场景不满足。比如连续检查同一批次的产品如果这批货本身质量就不稳定前面抽到次品说明这批货整体偏差那后面抽到次品的概率其实会升高——这就是不独立。再举一个更隐蔽的例子用户在App里连续看到同一个广告位。第一次看到没点第二次再看到可能因为已经熟悉了反而更不点也可能因为好奇点了无论哪种第二次的点击概率都和第一次不同独立假设就不成立。这种情况下用二项分布算出来的概率会有系统性偏差而且偏差方向取决于具体机制可能高估也可能低估。我的经验是判断独立性能不能成立不要只做数学检验先问业务流程。生产环节里如果抽样是“抽完放回”或者从大批量中随机抽少量近似独立如果是一次性连续抽取且批量不大就要打问号。用户行为场景里同一用户的多次曝光基本都不独立但如果是“1000个不同用户各看一次”就可以近似当作独立因为样本单位换了人。这个区分很关键它决定了你手里的n到底是“1000次曝光”还是“1000个独立用户”。1.3 成功次数把n次结果加总成一个随机变量前两个零件装好第三个零件就顺理成章了。既然每次试验都是独立同分布的伯努利试验那我们关心的往往不是某一次的结果而是n次试验里一共成功了多少次。把每次的结果记为X₁、X₂、…、Xₙ每个取值0或1那总成功次数X X₁X₂…Xₙ这个X就是一个随机变量它的取值范围是0到n的整数。二项分布描述的就是这个X的概率规律记作X ~ B(n, p)。这里我想强调一个思维转变单次试验的随机性你控制不了但n次加总之后的分布是有规律的而且这个规律只由两个参数决定。这意味着只要我知道n和p我就能回答“成功次数落在某个区间的概率是多少”这类问题不需要真的把n次试验全做一遍。这也是二项分布在质检、A/B测试、保险精算里被大量使用的原因——它让你用有限的抽样去推断更大范围的情况。理解到这一层你就明白为什么公式里的n和p这么重要了它们是这个模型的全部输入。2. 公式不是背出来的是数出来的到这一步该面对公式了。二项分布的概率质量函数长这样P(Xk) C(n,k) × p^k × (1-p)^(n-k)。绝大多数人卡住的地方是那个C(n,k)以及为什么是“乘”而不是“加”。我的建议是别把它当公式记把它当成一个“分两步数数”的过程来理解第一步数有多少种排列方式能让成功恰好发生k次第二步算每一种排列发生的概率最后乘起来。这样推一遍公式就再也忘不掉了。2.1 组合数C(n,k)到底在数什么先想一个具体问题抛5次硬币恰好出现2次正面有多少种不同的出现顺序枚举一下正正在前、正反反正正、反正正正反……这类组合一共有10种。这个10就是C(5,2)。组合数的含义是“从n个位置里挑出k个位置放成功剩下n-k个位置自动放失败有多少种挑法”。注意这里挑的是位置不是结果因为每一次的位置是固定的第1次、第2次……第n次我们能决定的只是哪些位置上是成功。为什么用组合而不是排列因为同一组位置上的成功无论按什么顺序被“选中”在最终结果序列里都是同一个序列。比如第1次和第3次成功这只有一种结果序列不会因为你先想到第3次再想到第1次就变成两种。组合数天然处理了这种重复计数所以是C(n,k)而不是A(n,k)。C(n,k)的计算是 n! / (k! × (n-k)!)我习惯记成“分子从n开始往下乘k个数分母从k往下乘到1”比如C(5,2) (5×4)/(2×1) 10。这里有个实操层面的提醒n稍微大一点阶乘就会爆掉。20!已经超过2×10^18100!更是天文数字直接算阶乘再除在浮点数里会溢出成inf或者精度严重丢失。所以写代码时不要自己用阶乘硬算用math.combPython 3.8或者scipy.special.comb它们内部做了优化。如果连组合数都大到没法表示那就该转去对数空间算了这个后面第5节会专门讲。2.2 概率公式的乘法与加法逻辑组合数解决“有多少种排法”接下来算“每一种排法出现的概率”。因为试验独立每一种具体排列的概率就是把每次的概率乘起来成功k次贡献p^k失败n-k次贡献(1-p)^(n-k)乘在一起就是p^k × (1-p)^(n-k)。注意这个值对每一种排列都是一样的因为乘法可交换成功出现在第几个位置不影响最终乘积。于是总概率 排列种数 × 每种排列的概率 C(n,k) × p^k × (1-p)^(n-k)。这里的逻辑是“加法原理”所有满足“恰好k次成功”的互斥排列它们的概率相加而因为有C(n,k)种排列且每种概率相同加法就退化成了乘法。我把这个理解方式叫作“先分类再合并”分类是数排列合并是同概率相加。很多人公式记混把组合数放到指数上或者忘了(1-p)的指数是n-k本质都是没走完这个“分类再合并”的推理链条。举个手算的例子验证一下。n3p0.2求恰好1次成功的概率。C(3,1)3每种排列概率是0.2×0.8×0.80.128乘起来0.384。用公式P(X1)3×0.2×0.8²0.384对上了。再用另一种方式校验P(X0)0.8³0.512P(X2)3×0.04×0.80.096P(X3)0.008四个值加起来0.5120.3840.0960.0081说明分布是完整的。这种“全概率加总等于1”的自检习惯建议你每次手算都做一遍能抓出大部分低级错误。2.3 期望与方差两个不用背也能推出来的数二项分布的期望是np方差是np(1-p)。这两个结论很多人是背下来的其实用“指示变量相加”的思路两行就能推出来。把每次试验记成Xᵢ取值0或1E(Xᵢ)pVar(Xᵢ)p(1-p)。总次数XΣXᵢ期望的可加性不需要独立性所以E(X)ΣE(Xᵢ)np这一步无条件成立。方差的可加性需要独立性在独立假设下Var(X)ΣVar(Xᵢ)np(1-p)。这两个数的实际意义特别直观np告诉你“平均成功多少次”np(1-p)告诉你“波动有多大”。比如n100、p0.05期望是5方差是4.75标准差约2.18。也就是说正常情况下次品数会在5上下波动两个左右如果你抽检100个发现15个次品那距离期望已经超过4个标准差这时候就该怀疑p根本不是0.05而不是安慰自己“运气不好”。我在实际项目里经常用这个粗判先算期望和标准差再看观测值偏离几个标准差三倍以上就要警觉。这个思路不需要任何查表口算就能完成初步判断是性价比最高的自检手段。另外提一句期望和方差的一个常见误用方差np(1-p)在p0.5时最大p接近0或1时最小。这意味着同样n下低不良率场景的绝对波动反而小但相对波动标准差除以期望会很大。n100、p0.01时期望1标准差约0.995相对波动接近100%这时候你抽到0个或者2个次品都毫不奇怪别急着下结论说产线变好了或者变差了。3. 参数选择与计算过程实录公式懂了接下来的问题才是真正让人头疼的n和p这两个参数到底从哪来这不是数学问题是业务问题。我见过太多人拿着公式却填不出参数或者随手填了个想当然的数最后结论全歪。这一节按我的实际操作顺序讲先定n再估p然后算期望方差做粗判最后判断要不要用近似方法。3.1 n和p怎么定从业务问题到参数映射n的确定关键看你问的是什么问题。如果是“抽检20个判断这批货合不合格”n就是抽样数量这个数往往由检验成本、批量大小和行业惯例共同决定不是随便定的。如果是“1000次曝光能带来多少转化”n就是曝光次数。如果是“50只实验对象里有多少只有效”n就是样本量。这里有个容易混淆的点n必须是“独立重复的单位数”而不是“观察的总次数”。比如同一用户被曝光10次这10次不独立不能简单当成n10但如果是1000个不同用户各曝光1次n1000就成立。我一般在文档里会把n的定义写清楚“n 独立用户数每个用户仅计首次曝光”避免后面有人拿错数。p的估计更麻烦因为它通常未知。常见来源有三种。第一种是历史数据比如过去三个月该产线的平均不良率是1.8%就先用0.018。第二种是理论值或设计值比如某设备标称合格率99%那就先按0.99算再看实测是否吻合。第三种是保守假设比如做样本量规划时取p0.5让方差最大算出来的n最保险。三种来源的可靠性依次递减用历史数据时要注意时间窗口和产线是否变过用保守假设时要明确说明“这是最坏情况估计”别让下游误以为是真实值。还有一个常被忽略的问题p是不是对所有试验单位都一样。如果一批货里混了不同批次、不同机台的产品整体不良率可能是各批次的加权平均但每个个体真实的p并不相同。这种情况下用单一的p去套二项分布方差会被低估置信区间会偏窄结论容易过于自信。我在实际项目里遇到混合批次宁可分层分别建二项模型也不合并成一个。分层的代价是样本量变小、区间变宽但结论更诚实。3.2 期望、方差、标准差的推导与手算参数定好之后的第一个动作我建议是先手算期望和标准差别急着上代码。理由很简单这两个数能帮你建立对结果的直觉也能在代码跑出离谱结果时第一时间发现异常。计算过程就三步期望np方差np(1-p)标准差方差开根号。举个例子n200p0.04期望8方差200×0.04×0.967.68标准差≈2.77。有了这三个数你能立刻回答一批问题。观测到12个次品偏离期望(12-8)/2.77≈1.44个标准差属于正常波动范围观测到20个偏离4.33个标准差基本可以判定p不止0.04。这个判断不需要精确概率靠的是“三倍标准差”这个经验边界。当然严格判断还是要算精确概率但手算这一步能让你在做精确计算之前就有个方向感。我还会顺手算一下“相对波动”也就是标准差除以期望。上例中2.77/8≈0.35意味着波动幅度大约是均值的35%这个量级还能接受。如果相对波动超过1说明结果很不稳定单次观测几乎没有参考价值这时候要么加大n要么接受“这个指标本身噪音就大”的事实。相对波动的公式是sqrt((1-p)/(np))n越大、p越远离0和1它就越小。想让相对波动降到10%以下n大致需要100(1-p)/p这个估算在做样本量规划时很好用。3.3 正态近似与泊松近似什么时候该偷懒n一大精确计算组合数就变得不划算这时候可以用近似。最常用的是正态近似当np和n(1-p)都不太小常见经验是都≥5严格些要求≥10时X近似服从均值np、方差np(1-p)的正态分布。用的时候记得做连续性校正因为二项分布是离散的、正态是连续的算P(X≤k)时要用k0.5作为上界算P(X≥k)时用k-0.5作为下界。不做校正的话n不够大时误差会很明显。另一种是泊松近似当n很大、p很小、np适中比如n≥100p≤0.05np在1到20之间时X近似服从参数λnp的泊松分布。工业不良率场景特别适合这个近似因为p往往只有百分之几甚至千分之几。泊松分布只有一个小参数λ算起来比二项分布轻便得多而且很多场景下精度足够。我的实际选择顺序是这样的n小于几百直接精确算现在的计算库完全扛得住n到几千、p中等用正态近似加连续性校正n很大、p很小用泊松近似如果np小到连泊松都不合适那就老老实实精确算或者用对数空间。别为了省事在n15的时候硬套正态近似那个误差能到百分之几做判定时足够让你判断错。近似的价值在于大规模计算和解析推导不在于小样本的精确判定。4. Python实操从手算到代码验证理论讲完进入我最喜欢的环节用代码把上面的每一步都验证一遍。我做统计分析有个习惯任何一个公式先手算一个小例子再写代码复现两边对上才敢用在正式项目里。这一节给出一套可以直接跑的代码从单点概率到累积概率再到可视化最后附一个手写公式的对照版本方便你确认自己真的理解了而不是只会调包。4.1 用scipy计算单点概率与累积概率先装依赖pip install scipy numpy matplotlib然后最基本的三个函数就够用了binom.pmf算恰好k次的概率binom.cdf算至多k次的累积概率binom.sf算至少k次的概率。注意sf(k)返回的是P(X k)所以“至少k次”要写sf(k-1)这个off-by-one我在早期项目里错过不止一次算出来的“至少3次”实际是“至少4次”结论差了一大截。from scipy.stats import binom n, p 100, 0.05 # 恰好5次成功 print(binom.pmf(5, n, p)) # 0.1800 左右 # 至多2次成功P(X 2) print(binom.cdf(2, n, p)) # 0.1183 左右 # 至少3次成功P(X 3) print(binom.sf(2, n, p)) # 0.8817 左右等于 1 - cdf(2) # 落在区间 [3, 7] 的概率 print(binom.cdf(7, n, p) - binom.cdf(2, n, p))这段代码里我最想让你注意的是最后一行的写法。区间概率用两个cdf相减左边界的处理是“减去小于左边界的那部分”即P(a≤X≤b)cdf(b)-cdf(a-1)。写成cdf(b)-cdf(a)就少算了一个点。为了少犯这种错我现在的习惯是先把边界写清楚再写代码比如“求3到7个次品的概率含3和7”然后在注释里标出用的是a-1。再补一个查分位数的用法binom.ppf(q, n, p)给的是累积概率达到q时的最小k。比如想知道95%情况下次品数不超过多少用binom.ppf(0.95, n, p)。这个在制定抽检上限、设定告警阈值时非常实用。4.2 手写公式与库函数对拍调包调得再熟也建议亲手写一遍公式。一来能确认自己真的理解了每一项的含义二来遇到库函数版本差异或者特殊参数化时手写版能救急。from math import comb def binom_pmf_manual(k, n, p): if k 0 or k n: return 0.0 return comb(n, k) * (p ** k) * ((1 - p) ** (n - k)) from scipy.stats import binom for k in range(0, 11): a binom_pmf_manual(k, 100, 0.05) b binom.pmf(k, 100, 0.05) assert abs(a - b) 1e-12, (k, a, b) print(全部对拍通过)这段对拍代码我强烈建议你自己跑一遍。写的时候注意三个细节一是k超出[0,n]要返回0不然comb会抛异常二是p0或p1时0的0次方在Python里等于1虽然碰巧不出错但逻辑上要心里有数三是浮点误差用1e-12量级判断别用相等比较。手写版还有个好处是方便改造。比如你需要算“至少k次”的手写版可以直接对k到n求和虽然慢但逻辑清楚适合做交叉验证。4.3 分布形态随参数变化画出来比背下来管用二项分布的形态完全由n和p决定这件事光看文字没感觉画出来一眼就懂。p0.5时分布对称像一口钟p偏小的时候分布右偏左边堆得很高右边拖一条长尾n变大时分布逐渐变窄变平滑向正态靠拢。import numpy as np import matplotlib.pyplot as plt from scipy.stats import binom fig, axes plt.subplots(1, 3, figsize(15, 4)) configs [(20, 0.5), (20, 0.1), (100, 0.1)] for ax, (n, p) in zip(axes, configs): ks np.arange(0, n 1) ax.bar(ks, binom.pmf(ks, n, p), width0.8) ax.set_title(fn{n}, p{p}) ax.set_xlabel(成功次数 k) ax.set_ylabel(概率) plt.tight_layout() plt.show()画完你会注意三件事。第一p0.1、n20时k0、1、2这三根柱子加起来占了很大比重说明低概率事件下“零发生”是常态不要因为一次抽检没发现问题就认为问题不存在。第二n从20增到100、p保持0.1分布明显变窄峰更集中这就是大样本的价值。第三右偏形态提醒你低不良率场景下均值右侧的尾部虽然长但很细用均值去代表“典型情况”会偏高中位数往往是0或1。我经常把这张图放在汇报材料里非技术同事看完基本就能理解“为什么抽20个没抽到次品不能说明不良率为零”。图比任何解释都直接。5. 常见问题与排查技巧实录这一节是我这些年踩坑攒下来的。二项分布本身不难难的是判断它到底适不适合当前场景以及算出来的数为什么和业务直觉对不上。下面按问题出现的频率从高到低排每个都给出识别方法和处理建议。5.1 前提被破坏独立性和固定p的四个典型翻车场景场景一无放回抽样当成有放回。从100件产品里不放回抽10件每抽一件次品率都会变严格来说服从超几何分布而不是二项分布。什么时候可以近似用二项经验法则是抽样比例不超过总量的10%也就是n/N≤0.1此时每次概率变化很小二项近似够用。超过这个比例尤其是n/N超过0.2就该换超几何分布否则算出来的概率偏低超几何的方差更小。场景二同一单位多次观测。一个用户看10次广告你不能当成n10。用户内部的多次行为高度相关真实的独立单位数是用户数而不是曝光数。把曝光当独立单位会让置信区间严重偏窄统计显著性虚高。正确做法是按用户聚合比如“是否至少点击一次”再把用户层面做成伯努利试验。场景三p随时间漂移。产线刚换模具、活动刚开始流量质量不稳定这些时段p都不是常数。把不同p的时段合并计算方差会被低估。处理办法是分时段建模或者先做同质性检验确认各时段p没有显著差异再合并。场景四成功事件之间互相排斥。比如统计“页面被点击的次数”一个用户点两次算两次但如果你的业务定义是“一次会话算一次点击”那就不是计数问题了。定义清楚“成功”的单位是所有计算的前提。这四种情况的共同点是公式没算错但模型用错了。我现在的习惯是每次建模前先在纸上写三句话独立单位是什么、每次试验的两种结果是什么、p凭什么认为是常数。三句话写不出来就别急着跑代码。5.2 数值问题下溢、溢出与精度丢失n大的时候p**k和(1-p)**(n-k)可能一个下溢成0另一个也接近0乘出来变成0但真实概率并不是0。这在n1000、k500附近特别常见。解决办法是转到对数空间先算log概率再取exp。用lgamma算组合数的对数避免阶乘溢出。import math def binom_logpmf(k, n, p): return (math.lgamma(n 1) - math.lgamma(k 1) - math.lgamma(n - k 1) k * math.log(p) (n - k) * math.log1p(-p)) # 需要概率本身时 log_p binom_logpmf(500, 1000, 0.5) print(math.exp(log_p)) # 约 0.0252两个细节math.log1p(-p)比math.log(1-p)在p很小时更精确因为log1p专门处理接近1的输入k0或kn时log(p)或log(1-p)可能涉及log(0)要加边界判断。另外如果只需要比较两个概率的大小比如找众数完全可以只比对数值不必exp回来能省掉精度损失。还有一个常见坑是累积概率用1减。1 - cdf(k)在尾部概率很小时会丢失精度因为cdf接近1相减后有效位数所剩无几。这时候直接sf(k)它内部做了优化尾部精度好得多。我见过有人用1-cdf算极小的p值结果算出0误以为“不可能发生”其实只是精度不够。5.3 常见问题速查表把上面的内容整理成表方便对着查。现象可能原因排查方向处理办法观测值反复超出均值3倍标准差p估计偏低或场景已变核对历史数据窗口检查产线/流程变更重新估p或分时段建模算出的概率异常小甚至为0浮点下溢检查n和k是否很大改用对数空间计算与实际频率系统性偏差独立性不成立多次观测同一单位确认n是独立单位数还是观测次数按单位聚合后重算置信区间过窄无放回抽样、p漂移、混合批次算n/N比例检查批次构成换超几何、分层或加随机效应“至少k次”结果差1sf参数用错检查是否写成sf(k)改为sf(k-1)小样本用正态近似误差大np或n(1-p)太小算一下np和n(1-p)n小时用精确计算这张表我贴在项目文档的开头新人上手先对着看一遍能省掉很多来回沟通。表里最值得记住的是第一行和第三行这两个问题占了实际项目里出错的绝大多数。6. 应用场景与边界知道什么时候不该用它二项分布的适用面很广但正因为它太好用很多人会不自觉地把它套到所有“计数”问题上。这一节讲三类我实际做过的场景以及一条明确的边界线。6.1 质量抽检从“抽到几个”到“整批怎么判”抽检是最典型的二项分布场景。抽n个产品每个独立判定合格与否p是真实不良率观测到k个次品。用二项分布能算出的东西比很多人想的多不仅能算“恰好k个”的概率还能算“如果真实不良率是p₀抽到k个及以上次品的概率有多大”。后者就是p值用来判断实测结果是否和假设的p₀相容。实际操作里我会分三步走。第一步先定判定规则比如“抽50个次品数超过4就拒收”然后算这条规则在合格质量水平下的误拒概率用binom.sf(4, 50, p₀)以及在不合格质量水平下的接收概率这两个数决定了规则的松紧。第二步根据规则反推需要的n既保证误判风险可控又不至于抽样成本过高。第三步执行抽检并记录注意记录抽样方式是否有放回、是否分层因为方式不同对应的分布不同。这里要提醒一个业务上常见的要求很多标准里写的抽样方案是“接收质量限”那一套背后其实是用二项分布或超几何算出来的但方案表已经固化了你不需要每次重算。真正需要自己算的场合是方案表覆盖不到的特殊n和p组合或者你要评估现有方案在自己场景下的实际风险。6.2 转化率与A/B测试比例检验的底层就是二项分布A/B测试里比较两组转化率用的是两比例检验但它的底层假设就是每组转化数服从二项分布。理解这一点你才能解释清楚为什么小样本的A/B测试结论不可靠。假设A组1000次曝光38次转化B组1000次曝光45次转化看起来B高但两个二项分布的标准差各自约为6差异7次完全在正常波动范围内。我一般会先算单组的二项区间再看两组区间是否重叠最后才做正式检验。这个顺序的价值在于区间能直观告诉你“这个样本量能分辨多大的差异”。很多团队在样本量明显不足的时候就急着看显著性结果反复横跳今天A好明天B好本质上是把噪音当信号。样本量规划也可以直接用二项分布推。给定基线转化率p₀、想要检测的最小提升Δ、显著性水平和检验功效能反推出每组需要的n。粗算的经验公式是每组n≈16×p(1-p)/Δ²这个公式能让你在几分钟内判断“这个实验至少得跑两周”而不是拍脑袋定个三天。6.3 明确边界这几种情况请换模型最后划几条线。第一结果类别超过两种比如评分1到5星这不是伯努利试验用多项分布或者直接看分布形态。第二每次试验的成功概率不固定且无法分层考虑beta-二项分布它允许p本身是个随机变量能刻画过度离散。第三事件发生次数没有固定上限比如单位时间内到达的顾客数用泊松分布更合适。第四抽样不放回且比例较大用超几何分布。第五观测之间有明显相关性时间序列、同一用户多次需要更复杂的模型不能硬套。判断方法其实不复杂问自己“试验次数n是不是事先固定的”“每次是不是只有两种结果”“每次的p是不是同一个数”“各次之间是不是互不影响”。四个都是“是”放心用二项分布有一个“不是”就得想替代方案。我宁愿在建模前多花十分钟确认这四件事也不愿意在结论被质疑时回头返工。再补充一个实操上的小技巧关于怎么把二项分布的结果讲给非技术同事听。直接说“P(X≥8)0.032”对方没感觉换成“如果真实不良率还是1%那么抽100个出现8个以上次品的机会大约只有3%属于小概率事件”就好懂得多。我习惯同时给两个数观测值落在期望的几个标准差之外以及对应的精确概率。前者给方向后者给分量两个一起说对方既能听懂又能拿去汇报。我个人在实际项目里最深的一点体会是二项分布真正的门槛不在公式而在“把业务问题翻译成n和p”这一步。翻译对了后面全是机械计算翻译错了算得再精确也是南辕北辙。所以每次动手之前我都会逼自己用一句话说清楚我在数什么单位、这个单位成功一次意味着什么、凭什么认为每次成功的概率一样。这三句话说顺了模型才站得住。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。