1. 几何分布到底在讲什么——从一个抛硬币的直觉开始
如果只能用一个词概括几何分布,我会选"等待"。
它描述的是这样一类问题:在一次次独立重复的试验中,每一轮只有"成功"或"失败"两个结果,成功概率固定为 p,那么你等到第一次成功之前,一共要经历多少次试验?几何分布就是回答这个等待过程的概率模型。
我第一次接触到这个分布时,总觉得它是个"小透明"。正态分布、泊松分布名气太大,几何分布夹在中间,公式也简单,看起来好像没什么好讲的。但后来在工程项目里反复遇到它——做可靠性测试要算"首次故障出现之前能撑多久",做用户流失分析要估"用户第几次活动后不再回来",做质检测试要想"连续抽检多少个才能碰到一个次品"——我才意识到,几何分布其实是很多"第一次"问题的底层数学骨架,比想象中实用得多。
这篇内容适合正在学概率统计的学生、刚入门数据分析师,以及所有需要在业务或工程里处理"首次成功等待时间"问题的人。我会先讲清楚它的直觉和公式,再把无记忆性这个最容易翻车的点掰开揉碎,最后给你一套可以直接落地的计算和验证方法。
1.1 "第一次成功"场景:几何分布的核心语义
先给一个最烂大街但最有效的例子:一枚均匀硬币,抛到正面算成功。那么:
- 第一次就出正面的概率是多少?答案是 1/2。
- 如果第一次是反面、第二次才是正面呢?概率是 (1/2) × (1/2) = 1/4。
- 如果前两次都是反面、第三次才出正面?概率是 (1/2)² × (1/2) = 1/8。
你发现规律了:前面每一次失败都会"消耗"一个 (1-p) 的因子,最后一次成功再乘一个 p。这就是几何分布概率质量函数的核心逻辑——它本质上是一串"失败-失败-失败……成功"的乘法表达式。
从数学上写出来是这样:
设随机变量 X 表示第一次成功前经历的试验总次数(包含成功那一次),p 为单次成功概率,则:
P(X = k) = (1 - p)^(k-1) × p,k = 1, 2, 3, ...
这个公式是几何分布最常见的"版本一"。但这里立刻有一个大坑,我见过无数人在这个点上踩雷——几何分布还有第二种定义方式,它把 X 定义为"第一次成功前失败的次数",也就是不包含成功那一次。如果按这种定义,公式会变成:
P(Y = y) = (1 - p)^y × p,y = 0, 1, 2, ...
两种定义本质是一回事,只是"数数"的起点差了一次。y = x - 1,期望也差一个 1。后面我会专门用一节来讲怎么避开这个混淆,这里你只需要先记住:用之前先问自己,代码或文献里说的 X 到底从 1 开始数还是从 0 开始数。
1.2 成功概率 p 和试验数量 k:两个参数怎么理解
几何分布是少数只有一个参数 p的离散分布。这一点它比正态分布、泊松分布都"抠门"——只需要知道单次成功概率,整个分布的形态就完全确定了。期望是 1/p,方差是 (1-p)/p²,全都由 p 派生出来,没有第二个自由度。
参数少是优点也是缺点。优点是建模简单,你只需要估出一个 p 就能得到整个分布;缺点是它非常"倔强",模型假定每一次试验的成功概率恒定不变,且试验之间完全独立。这在现实世界里其实是相当强的假设。比如"用户第几天流失"这个问题,用户每天的活跃概率会受周几、节假日、产品版本更新的影响,并不是严格的恒定 p。所以用几何分布做近似的时候,心里得有一根弦:它描述的是一个理想化的恒速过程。
试验数量 k 的含义也要仔细抠一下。k 的最小值取决你用的是哪种定义,从 1 开始还是从 0 开始。在工程上,"k=0 次失败后就成功"这种写法在代码里很常见,因为大部分编程语言的索引都从 0 开始。但如果你在用公式手算,一定要先确认自己写的公式版本,不然期望、方差、分布函数全会错一位。
1.3 几何分布和"兄弟分布"的边界
很多初学者容易把几何分布和几个"长得很像"的分布搞混,我在这里先把边界划清楚:
- 二项分布 Binomial(n, p):做 n 次试验,关心的是"成功了多少次",次数是固定的,结果是个数。
- 负二项分布 Negative Binomial(r, p):一直试验,直到累计成功 r 次为止,关心的是"需要的总试验次数"。当 r = 1 时,负二项分布就退化为几何分布。
- 指数分布 Exponential(λ):连续版本"第一次成功等待时间"——如果你把离散的"每单位时间一次试验"变成"连续时间内的到达过程",几何分布就会收敛为指数分布。
把这几条边界理顺之后,你会发现几何分布不是孤立的概念,它是一整个"等待时间"家族里的离散基石。后面我在讲应用场景时还会反复回到这张"关系网"。
2. 核心公式与性质:不只是"背公式",而是真正理解
说实话,几何分布的公式简单到大部分人扫一眼就会。但公式会背和真正理解是两码事。这一节我不打算只列公式,而是把每个公式背后的"为什么"讲透,这样你遇到变形题、编程实现、甚至面试追问时,才不会卡壳。
2.1 概率质量函数背后的乘法原理
P(X = k) = (1-p)^(k-1) p 这个式子,可以拆成两部分看:
第一部分,前 k-1 次都失败的概率。每一次失败的概率是 (1-p),由于试验独立,k-1 次失败同时发生的概率是这些概率的乘积,也就是 (1-p)^(k-1)。第二部分,第 k 次成功的概率,就是 p。
两者相乘,得到的就是"前 k-1 次全部失败且第 k 次成功"这条特定路径的概率。
这里有一个初学者常问的问题:为什么不是"前 k 次试验中恰好有 1 次成功"的概率?如果按照二项分布的思路,P(前 k 次中有 1 次成功) = C(k, 1) p (1-p)^(k-1) = k p (1-p)^(k-1),这比几何分布的概率大得多。
差别在于,二项分布不在乎"那 1 次成功"发生在哪一次,而几何分布严格要求成功必须发生在最后一次。前面任何一次成功都不算数,因为一旦提前成功,"等待"过程就结束了。所以几何分布没有组合数 C(k, 1),它只有一条路径——失败、失败、失败……一直到最后一次才成功。
理解了这个区别,你就不会再把几何分布和二项分布的概率算混。这也是很多教科书里喜欢强调的"几何分布的无记忆性来源于路径唯一性"的直觉起点。
注意:几何分布每次试验必须严格独立。如果试验之间有相关性(比如前一次结果会影响下一次概率),整个乘法结构就崩了,不能再套用这个公式。
2.2 无记忆性——几何分布最反直觉的性质
如果你只能记住几何分布的一个性质,一定要记这个:无记忆性(Memoryless Property)。
用大白话说:你已经连续失败了 100 次,接下来"还要再等多少次才成功"的概率分布,和一个从来没开始试验的人从零开始等成功的概率分布,完全一样。过去失败的次数不会让成功"更近",也不会让成功"更远"。
数学表达式是这样的:
P(X > m+n | X > m) = P(X > n)
也就是说,已知已经失败了 m 次以上,那么至少还要再等 n 次以上的概率,等于从零开始至少等 n 次以上的概率。100 次失败之后,你并没有"更接近成功"。
这件事极其反直觉,因为我们的日常生活经验恰好相反:如果你连续做某件事失败了 100 次,通常会觉得自己"快成功了"。但在几何分布的模型框架下,这种直觉是错的——每一次试验都是全新的,之前的结果完全不携带信息。
举个例子:你连续掷了 10 次骰子都没掷出 6 点。有人告诉你"你已经 10 次没出 6 了,下次该出了吧"。几何分布告诉你,下次出 6 的概率还是 1/6,和第一次掷一模一样。这在概率论里叫"赌徒谬误",几何分布就是用来打破这种错觉的最好工具。
无记忆性还有一个直接推论:几何分布是唯一具有无记忆性的离散分布。就像指数分布是唯一具有无记忆性的连续分布一样。这个唯一性在数学上非常漂亮——只要你观察到某个离散等待过程具有"过去的等待不影响未来"的特性,你就可以放心地用几何分布来建模。
2.3 期望与方差的直观理解
期望公式 E[X] = 1/p,这个结果很符合直觉:成功概率是 1/2,平均要等 2 次;成功概率是 1/100,平均要等 100 次。但如果你的几何分布定义是"失败的次数"(不包含成功那次),期望就要相应减 1,变成 E[Y] = (1-p)/p。
方差公式 Var(X) = (1-p)/p²,它告诉我们一个重要的信息:p 越小,方差越大,甚至方差会爆炸式增长。当 p = 0.1 时,期望是 10,方差是 90;标准差约 9.5,接近期望本身。这意味着"平均 10 次才成功"的情况下,真实等待次数可能少到 1 次,也可能大到几十次,分布非常"胖"。
我见过不少做工程的同学只看期望值就拍脑袋做容量规划,结果被真实分布狠狠打脸。比如某个关键组件的故障率是 p = 0.01,期望首次故障时间是 100 个周期,但方差是 9900,标准差约 99.5 个周期,波动范围大到根本没法用一个点估计去覆盖。所以用几何分布做预测,一定要把分位数也拿出来看,别只盯着平均数。
分位数的计算在代码里很好做。比如算 90% 分位数,就是找最小的 n 使得 P(X ≤ n) ≥ 0.9。几何分布的累积分布函数有闭式解:
P(X ≤ n) = 1 - (1-p)^n
令 1 - (1-p)^n ≥ 0.9,解得 n ≥ ln(0.1) / ln(1-p)。这个闭式解在工程计算里非常方便,不用查表、不用数值迭代,一行公式就能算出"多少个周期内达到 90% 成功率"。
3. 现实世界的几何分布——从工程到业务的典型场景
几何分布看起来像是概率课本里的小角色,但它的应用场景覆盖面其实惊人。这一节我挑三个我实际接触过的领域来拆解:系统可靠性、用户留存、质量控制。每个领域都提供具体的建模思路和参数估计方法。
3.1 系统可靠性:首次故障前你能撑多久
在做系统可靠性分析时,几何分布最经典的应用是模拟"离散时间下的首次故障时刻"。
假设一个硬件组件每个运行周期有 p 的概率发生致命故障,且故障发生在哪个周期与之前的历史无关。那么"首次故障发生的周期数"X 就服从几何分布。如果 p = 0.02,平均来看组件能撑 1/0.02 = 50 个周期。但注意,这只是期望,分布本身非常分散。用刚才的分位数公式算一下,90% 的组件会在 n = ln(0.1)/ln(0.98) ≈ 114 个周期内故障——也就是说,如果你按平均寿命 50 个周期来设计维护计划,你只能覆盖大概 63% 的组件,剩下三分之一会在第 50 个周期之前就坏掉。
可靠性工程里经常把这种分析做成"维护策略"。比如要求"90% 的组件在发生故障前就被替换",那么替换周期就要定在 114 个周期,而不是 50 个周期。这就是为什么我在前面强调"不能只看期望"——在可靠性场景里,看分位数比看均值重要得多。
用几何分布建模可靠性问题时,有一个前提必须满足:故障概率 p 必须恒定。如果组件存在老化效应(越用越容易坏),p 就不再是常数,几何分布就不适用了,得改用威布尔分布之类的带老化参数的模型。反过来,如果组件确实符合"随机故障、无记忆"的特性(很多电子器件的浴盆曲线中间段就是这样),几何分布就是最简洁准确的建模工具。
实操心得:我碰过的不少可靠性项目中,"p 恒定"这个假设都不是直接拿来的,而是先用历史故障数据做了检验——简单的方法是把故障时间分布画出来,看它是否符合几何分布的无记忆性特征(比如条件概率随时间不变化)。如果偏差太离谱,再用更复杂的模型,别硬套。
3.2 用户留存分析:第几次活动后用户不再回来
用户留存是互联网业务里最常碰到的概率问题之一。几何分布在这里的建模思路是这样:把"用户在某个时间周期内流失"看作一次"成功"(虽然从业务角度这其实是失败),那么"用户在第几个周期流失"就服从几何分布。
举个我实际处理过的例子:一个内容类产品,我们观察一批新增用户在后续 30 天内的活跃情况。假设每个自然日用户有 p = 0.15 的概率"彻底流失"(之后不再回来),那么这批用户的预期活跃天数就是 1/0.15 ≈ 6.7 天。这听起来很简单,但真正有意思的是用几何分布做留存曲线的拟合和外推。
留存曲线(Retention Curve)描述的是"第 d 天还有多少比例的用户活跃"。在几何分布模型下,"用户至少活跃到第 d 天"的概率就是 P(X > d) = (1-p)^d。所以留存曲线应该是指数衰减的形状,在坐标轴上画出来是一根平滑下降的曲线。如果实际数据跟这根曲线匹配得好,说明用户的流失行为基本符合"每天恒定流失概率"假设,我们可以用几何分布做后续预测。
反之,如果实际留存曲线在第 3 天、第 7 天有明显"拐点",或者衰减速度前后不一致,那说明流失概率 p 不是常数,可能存在"新用户效应"或"周期效应"。这时候把整个曲线当做一个几何分布来拟合就会失真,需要分段建模(比如前 3 天一个 p,3 天之后另一个 p)。
我记得有一次做活动效果评估,我们用几何分布预测了一组用户的自然留存曲线,然后把活动组的实际留存和自然曲线对比,量化出活动带来的新增留存增量。这个方法比简单对比留存率数字更严谨,因为几何分布给出了一个"自然状态下的完整基线",而不只是一个孤立的百分比。
3.3 质量控制:连续抽检多少个才能碰到一个次品
生产线上最常见的质量控制问题之一,就是"平均抽检多少件才能碰到一个次品"。如果每件产品独立地以概率 p = 0.05 出现缺陷,那么"连续抽检直到首次发现缺陷"所需的抽检数量就服从几何分布,期望抽检数为 1/0.05 = 20 件。
这里工程上通常不只关心平均值,更关心抽检方案的置信覆盖。如果你希望"有 95% 的信心能在某个数量之内发现至少一个次品",那么要求的抽检数量 n 需要满足 P(X ≤ n) ≥ 0.95,即 1 - (1-0.05)^n ≥ 0.95,解得 n ≥ ln(0.05)/ln(0.95) ≈ 58.4,向上取整为 59 件。这意味着抽检 59 件还没发现次品时,就有理由怀疑实际的缺陷率低于 0.05(或者在 α = 0.05 的显著性水平下,你可以认为过程发生了改善)。
这类问题在质量管理里有一个专门名称叫"抽样验收方案设计"。几何分布提供了一种最简化的计算框架,虽然现代企业会用更复杂的抽验标准,但理解几何分布的底层逻辑仍然很关键,因为所有那些标准本质上都是在权衡"漏检风险"和"抽检成本"。
我在实际项目中用过一个变体:反过来根据抽检结果倒推 p 的置信区间。如果你抽检了 50 件产品,一个次品都没碰到,你可能会想"缺陷率是不是真的这么低?"用几何分布的极大似然估计,p_hat = 1 / (平均抽检件数)。50 件无缺陷意味着 p 的估计非常小,但置信区间的上限仍然不低——通过精确的二项或几何检验可以算出,在 95% 置信水平下,p 的上限大约是 1 - (0.05)^(1/50) ≈ 0.058。也就是说,虽然一个次品都没看到,你仍然不能断言缺陷率低于 5.8%。这个数字比很多人的直觉更保守,也是几何分布这个模型在质量场景里最有价值的提醒。
4. 实操:用数据说话,怎么算、怎么拟合、怎么验证
前面讲了不少理论和场景,这节直接上实操。我会给一个完整的、带参数和代码的流程:从手算一个例子开始,到用常用工具实现,再到数据和模型的拟合验证。确保你看完能直接跟着做。
4.1 手工计算一个完整例子
假设某抽卡游戏里,某个稀有卡牌的出货概率是 p = 0.03,每次抽取独立。玩家从零开始抽,直到抽到这张卡为止。我们计算几个关键数字:
第 6 次抽中的概率:P(X = 6) = (1 - 0.03)^5 × 0.03 = 0.97^5 × 0.03 ≈ 0.8587 × 0.03 ≈ 0.0258,约 2.58%。
前 10 次内抽中的概率:P(X ≤ 10) = 1 - (1 - 0.03)^10 = 1 - 0.97^10 ≈ 1 - 0.7374 ≈ 0.2626,约 26.3%。
期望抽卡次数:E[X] = 1 / 0.03 ≈ 33.3 次。这个数字很多人会觉得"还行",但请注意——
90% 分位数:n = ln(0.1) / ln(0.97) ≈ 75.6,向上取整为 76 次。也就是说,90% 的玩家在 76 抽之内能抽到,但仍有 10% 的玩家要抽超过 76 次。
方差:Var(X) = (1 - 0.03) / 0.03² = 0.97 / 0.0009 ≈ 1077.8,标准差约 32.8 次。
你看,期望 33.3 次、标准差 32.8 次,波动幅度非常大。如果策划只按期望值设计保底机制,会导致很大比例的玩家体验严重偏离预期,这也是为什么抽卡游戏普遍需要"硬保底"机制——因为纯几何分布的尾部太厚了。
4.2 用常用工具实现几何分布
手工算几步还行,真实数据分析里肯定要写代码。我以 Python 为例,给你一套最实用的操作。
# 基础库 import numpy as np from scipy import stats import matplotlib.pyplot as plt # 设定参数 p = 0.03 # 创建几何分布随机变量 # 注意:scipy.stats.geom 的定义是"直到成功为止的试验次数",从 1 开始 rv = stats.geom(p) # 计算概率质量函数 P(X = k) for k in [1, 6, 10, 33, 76]: print(f"P(X = {k}) = {rv.pmf(k):.6f}") # 计算累积分布函数 P(X <= k) print(f"P(X <= 10) = {rv.cdf(10):.6f}") print(f"P(X <= 76) = {rv.cdf(76):.6f}") # 期望和方差 print(f"期望 = {rv.mean():.2f}, 方差 = {rv.var():.2f}") # 分位数:90% 分位 print(f"90% 分位数 = {rv.ppf(0.9):.0f}") # 随机抽样,模拟 10000 个玩家的抽卡次数 samples = rvs_arr = rv.rvs(size=10000) print(f"抽样均值 = {samples.mean():.2f}, 抽样标准差 = {samples.std():.2f}") # 画出理论分布和抽样直方图对比 k_vals = np.arange(1, 101) plt.figure(figsize=(10, 5)) plt.hist(samples, bins=50, density=True, alpha=0.5, label="抽样分布") plt.plot(k_vals, rv.pmf(k_vals), 'r-', linewidth=2, label="理论 PMF") plt.xlabel("首次成功所需试验次数") plt.ylabel("概率密度") plt.legend() plt.show()运行这套代码,你会在终端看到几行关键输出。抽样 10000 次得到的均值和标准差会非常接近理论值,直方图和红色理论线也会贴合得很好。这本身就是验证"随机数生成器是否服从几何分布"的一个快速手段。
注意:如果你用的库是 R 或 Excel,它们的几何分布函数参数定义可能不一样。比如 R 里
dgeom(x, prob)默认 x 从 0 开始,也就是"失败的次数",而 scipy 的geom.pmf(k)从 1 开始。这个差异特别容易在跨平台协作时引发结果不一致。每次换工具之前,先用一个已知的小例子自测一下,比如 p = 0.5 时 P(X = 1) 应该等于 0.5,如果不是这个数,说明定义对不上。
4.3 拟合验证:你怎么知道数据真的符合几何分布
拿到一份"首次成功时间"数据后,直接套几何分布建模是不负责任的。我建议按下面三步来做验证:
第一步,估计参数 p。最常用的是矩估计:p_hat = 1 / x̄,其中 x̄ 是样本均值。另一种是极大似然估计,对几何分布来说结果一样(都是 1 / x̄),这在分布只有一个参数时很方便。
第二步,画图对比。把样本的经验累积分布和理论累积分布叠加在一起画图,肉眼观察是否存在系统性偏移。更专业一点可以画 QQ 图,横轴是理论分位数,纵轴是样本分位数,如果点基本落在一根 45 度直线上,说明拟合良好。
第三步,做拟合优度检验。常见的工具是卡方拟合优度检验,把数据分成若干区间,比较每个区间内的观测频数和理论频数。也可以用 Kolmogorov-Smirnov 检验,但在做 KS 检验时要注意:如果用同一个数据集估计出的 p 再去做检验,自由度和 p 值都会受影响,最好做个校正,或者直接用自助法模拟临界值。
我印象比较深的一个案例是分析某云服务的高可用数据。我们把"两次故障之间隔了多少个请求周期"当成一个离散变量来建模,最初直接拟合了几何分布,拟合优度检验结果非常差。后来排查发现,问题的根源是系统在夜间和白天故障率明显不同——把 24 小时数据混在一起,等效于把两个不同 p 的几何分布搅成了一锅粥。最后按时间段分段建模,每个时间段的拟合都很干净。这说明一个道理:几何分布模型验证失败的时候,大多数情况不是模型没用,而是你数据的"同质性"假设先被违背了。
5. 常见错误与工程陷阱
这一节我把我见过的高频错误集中列出来,帮你提前避开。都是真人真事,不是我编的。
5.1 版本定义搞混,所有数字全部错位
前面反复提到的"从 0 开始"和"从 1 开始",绝对不只是数学上的小差异。在工程协作里,一个人用 scipy(从 1 开始)写的代码,另一个人用 R(默认从 0 开始)做校验,两个人的结果永远对不上,还各自觉得自己没错。
我建议你养成一个习惯:在任何代码或文档里用到几何分布时,第一行注释里写明你用的定义,比如"这里 X 表示包含成功那次的试验总次数,X ≥ 1"。这个习惯在团队协作里能省下大把互相扯皮的时间。
5.2 误用无记忆性做因果推断
无记忆性是一个数学性质,但有些人会把它过度解释成"过去不重要"的因果论断。比如分析糖尿病患者并发症风险时,说"患糖尿病 5 年和 1 年的人,未来并发症风险一样",这种说法如果建立在几何分布上,就是偷懒的误用。
无记忆性成立的前提是,每次试验的成功概率恒定且相互独立。人体健康状况有累积效应,概率会随病程变化,根本不满足这个前提。把无记忆性生搬硬套到有演化趋势的场景中,是新手最容易犯的逻辑错误。用之前先问一句:过去的历史真的不携带任何信息吗?如果答案是"携带",几何分布就不是好模型。
5.3 直接拿小样本均值当参数
p 的矩估计是 1/x̄,但如果样本量太小,这个估计的方差会非常大。举个例子,你只观察了 5 次首次故障,平均故障间隔是 10 个周期,于是你估计 p = 0.1,这看起来合理,但置信区间其实宽得吓人。5 个样本的均值极不稳定,完全不足以支撑任何精确结论。
小样本情况下,我建议用贝叶斯方法或者至少报告置信区间,而不是只报告一个点估计。几何分布的 p 可以用 Beta 分布做共轭先验:如果你对 p 的先验是 Beta(a, b),观察到 n 次试验(其中有 1 次成功)后,后验是 Beta(a+1, b+n-1)。这是一种非常灵活的处理方式,特别适合工程上"数据少但还想做决策"的场景。
5.4 常见错误速查表
| 错误类型 | 典型表现 | 后果 | 正确做法 |
|---|---|---|---|
| 定义版本混淆 | scipy 和 R 结果对不上 | 所有概率和期望错位 1 | 注释标明定义,用小例子自测 |
| 只报期望不报分位数 | 容量规划按 1/p 来设计 | 覆盖不足,尾部风险被忽略 | 同时计算 90%/95% 分位数 |
| 数据非同质硬套 | 把不同时期的 p 混在一起拟合 | 拟合优度检验失败 | 分段建模或引入混合模型 |
| 用无记忆性强行解释因果 | 把"过去不影响未来"延伸到演化过程 | 结论与事实相悖 | 先检验独立性和恒定概率假设 |
| 小样本直接估 p | 样本均值当真实参数 | 估计方差极大,决策不可靠 | 用置信区间或贝叶斯后验 |
6. 深入一点:几何分布与指数分布的连续对应
如果你想真正打通概率论的知识体系,这里有一个非常值得理解的联系:几何分布是指数分布的离散版本。
指数分布的概率密度函数是 f(t) = λ e^(-λt),描述连续时间下"首次事件发生"的等待时间。如果时间被切分成很小的离散步长,每一步事件发生的概率是 p = λ·Δt,那么"事件发生在第几步"就近似服从几何分布。反过来,如果把几何分布的时间单位无限细分,让 p 变小、试验次数变大,同时保持 p·k 不变,几何分布就会收敛到指数分布。
这个关系极其有用,因为现实世界里很多过程本质上是离散的(比如一天一个采样周期、一个请求周期、一次抽卡),但数学上用连续模型更顺手。知道了两者之间的桥梁,你就可以在离散模型和连续模型之间自由切换。
举个例子:在系统容量规划中,如果用离散周期的观测数据,直接用几何分布算;如果要模拟"任意时间点都可能故障"的连续过程,用指数分布。两者的结论在采样足够密时几乎一致。但要注意,指数分布的"单位"是时间,几何分布的"单位"是试验次数,换算时要乘上时间步长。
同样值得记住的是,几何分布的"无记忆性"在指数分布那里有一个漂亮的连续版本:P(T > t+s | T > t) = P(T > s)。两者的无记忆性都源于同一个根——事件发生的"风险率"恒定为常数,不随时间累积。换句话说,如果你观察到某个过程的"单位时间风险率"基本不变,那么离散版本用几何、连续版本用指数,都不会错。
7. 最后的实操心得:怎么向别人讲清楚几何分布
前面六节已经把几何分布从直觉、公式、场景、实操到深水区全部覆盖了。这一节不算总结,算是我自己在给别人讲这个东西时的一点体会。
我教过不少同事和朋友几何分布,发现最容易让对方秒懂的方式,永远是"两个赌徒"的故事:一个赌徒已经输了 99 把,另一个赌徒刚坐下准备开始第一把。在公平游戏里,这两个人"再输一把"的概率完全相同,都是 p,因为每一把都是独立的。这个故事比任何公式都直观,而且它能立刻引出无记忆性这个概念,让对方在笑声中就理解了它有多反直觉。
如果是给工程师讲,我会更愿意从一个具体的容量问题切入,比如"平均故障间隔 50 个周期,但你要按 114 个周期去做库存准备,因为这样才能覆盖 90% 的场景"。数字一摆出来,大家马上就能感受到"期望和分位数之间的巨大落差",比抽象讲方差有用得多。
如果是给数据分析师讲,我会强调一件事:几何分布是一个零成本的基线模型。你不需要训练、不需要调参,拿一个均值就能建出整个分布,然后拿它跟真实数据对比,如果偏差太大,说明你的系统里一定有"非恒速"因素值得深挖。很多复杂的业务现象,第一步其实都可以先用几何分布这种最简单的模型去"照妖",把异常照出来之后,再用更复杂的模型去做精细刻画。
最后再分享一个我常用的小技巧:做任何几何分布分析时,先把无记忆性检验做了。方法很简单,把数据分成前后两段,分别做留存曲线或故障曲线,看后半段的形态是不是从"当前起点"重新开始。如果是,几何分布就是安全的;如果不是,你省下的时间相当于白捡。这个检验我几乎在每个项目里都做,成本极低,但每次都能避免拿错误模型做长篇大论的分析。希望你在自己的项目里也能用上这个习惯。