做可靠性的朋友应该都对这两种分布不陌生。上一篇讲的是Weibull和Lognormal的基础定义、概率密度函数形态,以及各自参数的名字和数学含义。这一篇我想换个角度,直接聊工程里更头疼的事情:手里拿到一批失效数据,到底该用哪个分布去拟合?拟合完之后,怎么把参数换算成工程师真正关心的B10寿命、平均寿命、可靠度曲线?以及那些软件不会明说、但实操中一定会踩的坑。
内容会偏向“怎么选、怎么算、怎么判断”,适合刚接触寿命数据分析的可靠性工程师、质量工程师,也适合做产品设计验证时被要求“给个MTTF/B10”但不太确定该用哪种分布的朋友。我会尽量用实际项目里的数字举例,一步一步算给你看。
1. 两种分布的本质差异与选型逻辑
1.1 从失效机理反推分布形态
选分布之前,先想清楚你的产品是怎么坏的。这句话听起来像废话,但实际项目里80%的选型错误都出在“手里有什么软件就用什么分布”上。
Weibull分布最核心的武器是形状参数β。β<1时失效率随时间下降,对应早期失效,比如制造缺陷、混入不良品、装配应力释放;β=1时失效率恒定,对应随机失效,比如外部过载、偶然撞击、环境突变;β>1时失效率随时间上升,对应磨损老化,比如机械磨损、材料疲劳、绝缘退化。可以说Weibull是浴盆曲线三个阶段的“通用翻译器”,这也是它在工业界用得最广的原因——你不需要事先精确知道失效机理,β会告诉你答案。
Lognormal分布则对应另一类物理过程:产品寿命取对数后服从正态分布,本质上失效时间是多个独立小因素相乘(而不是相加)的结果。典型场景包括金属疲劳裂纹扩展、电化学腐蚀、半导体电迁移、化学反应老化。这类失效的特征是“绝大多数个体在某个典型寿命附近失效,但少数个体寿命特别短或特别长”,右尾很长。
我的习惯是:先问失效模式是什么。如果是机械磨损、绝缘劣化、轴承疲劳这类“缓慢恶化到极限”的过程,优先试Weibull;如果是疲劳裂纹、腐蚀穿透这类“随机损伤累积、某个小缺陷被放大”的过程,优先试Lognormal。如果机理不明确,就同时拟合两个分布,对比拟合优度。
1.2 数学特性带来的工程后果
Weibull的数学特点是存在“最小寿命”的概念。两参数Weibull从t=0开始,三参数Weibull则引入位置参数γ,表示在此之前产品一定不会失效。这对很多机械产品很有吸引力——轴承、齿轮、密封件确实存在一个“安全期”。但用三参数Weibull要谨慎,样本量小的时候γ的估计很不稳定,容易出现过拟合。
Lognormal没有“绝对安全期”这个概念,它的累积分布从t=0开始就大于0,也就是说理论上任何时刻都有失效概率。但它的σ参数有很直观的物理意义:σ小说明个体间的寿命差异小,产品一致性高;σ大说明个体差异大,少数产品可能远早于中位寿命失效。这对应着一句话:如果你的产品主要问题不是“平均寿命低”,而是“有些人用三年没事,有些人三个月就坏”,Lognormal往往拟合得比Weibull好。
另一个差别在尾部行为。Weibull的右尾厚度由β决定,β小则尾部厚;Lognormal的右尾通常比常见β范围下的Weibull更厚。也就是说,如果你特别关心“极少数产品能用特别久”——比如保修期外还在使用的产品比例——Lognormal给出的长尾预测往往更接近实际情况。反之,如果你关心的是“最早一批失效何时出现”,Weibull的左尾行为(尤其是β>1时)往往更贴合工程直觉。
1.3 选型不是“一次定终身”
我见过不少同事把分布拟合当成“一次性操作”:跑一次软件,选R²最高的分布,然后就再也不看了。这是有风险的。正确的做法是:先根据失效机理选一个候选分布,拟合后看概率图上的点是否呈线性;如果不呈线性,再换另一种分布试。两种分布都拟合之后,除了对比相关系数R²或调整R²,还要看残差是否有系统性弯曲——如果有,说明你的数据里可能混着两种失效模式,而不是分布选错了。
举个例子。某机电产品做寿命试验,失效数据既有早期装配不良导致的早夭,又有正常磨损失效。这种混合数据用单一Weibull拟合,概率图会呈现典型的“S形”弯曲,β估计值落在1.2左右,看起来“还行”,但B10寿命预测会明显偏保守。这时候不该纠结Weibull和Lognormal哪个更好,而应该做混合分布分析,或者按失效模式分层、分别拟合。记住一句话:分布是工具,失效机理才是老板。
2. 参数估计:从概率图手算到软件拟合
2.1 图估计法的完整手算流程
虽然现在都用软件,但理解图估计法的手算逻辑,对判断软件输出是否合理非常重要。以两参数Weibull为例,核心思路是把累积分布函数做两次对数变换,变成线性关系。
Weibull的累积分布函数是:
F(t) = 1 - exp(-(t/η)^β)
变形后得到:
ln(-ln(1-F(t))) = β·ln(t) - β·ln(η)
所以如果以x = ln(t)为横轴,y = ln(-ln(1-F(t)))为纵轴画散点,然后拟合一条直线,斜率就是β,截距a = -β·ln(η),于是η = exp(-a/β)。
问题在于F(t)是未知的,只能用经验估计。工程上常用中位秩公式:
F_i ≈ (i - 0.3) / (n + 0.4)
其中i是失效时间从小到大排列的序号,n是样本量。我拿一组实际数据演示一下。假设6个样品全部失效,失效时间(小时)为:1500、2350、2900、4100、5200、6900。
先算秩和变换:
| 序号i | t_i(h) | ln(t_i) | F_i | y = ln(-ln(1-F_i)) |
|---|---|---|---|---|
| 1 | 1500 | 7.313 | 0.109 | -2.155 |
| 2 | 2350 | 7.762 | 0.266 | -1.175 |
| 3 | 2900 | 7.972 | 0.422 | -0.600 |
| 4 | 4100 | 8.319 | 0.578 | -0.147 |
| 5 | 5200 | 8.557 | 0.734 | 0.282 |
| 6 | 6900 | 8.839 | 0.891 | 0.794 |
对这6个点做普通最小二乘回归。x的均值是8.127,y的均值是-0.600,计算斜率:
β = Σ(x_i - x̄)(y_i - ȳ) / Σ(x_i - x̄)² ≈ 1.895
截距a = ȳ - β·x̄ = -0.600 - 1.895×8.127 = -16.001
特征寿命η = exp(-a/β) = exp(16.001/1.895) ≈ 4660小时。
这个结果意味着什么呢?η=4660小时对应63.2%失效的时间点,也就是说这6个样品中,预计有约63%会在4660小时前失效。虽然样本小,但这个估算逻辑和软件完全一致,只是软件用极大似然估计替代了最小二乘,结果会略有差异。
2.2 Lognormal分布的拟合逻辑
Lognormal的拟合更直白:对失效时间取自然对数,然后假设ln(t)服从正态分布。累积分布函数写成:
F(t) = Φ((ln(t) - μ) / σ)
其中Φ是标准正态分布的累积分布函数。因此图估计法就是以ln(t)为横轴,以Φ⁻¹(F_i)(标准正态分位数)为纵轴做散点,拟合直线。斜率的倒数就是σ,截距对应μ和σ的组合。
还是用上面那6个数据,直接做矩估计:ln(t)的均值μ = 8.127,ln(t)的样本标准差s = 0.557(用n-1为分母)。于是σ≈0.557。这个拟合的R²通常也很高,和Weibull比不出明显优劣——这就是为什么要结合失效机理来选。
手工计算Lognormal的公式很简单:
- 中位寿命 = exp(μ)
- 平均寿命MTTF = exp(μ + σ²/2)
- B10寿命 = exp(μ - 1.2816×σ),其中1.2816是标准正态分布的10%分位数绝对值。
代入本例:中位寿命 = exp(8.127) ≈ 3380小时;MTTF = exp(8.127 + 0.557²/2) ≈ 3960小时;B10 = exp(8.127 - 1.2816×0.557) ≈ 1660小时。
注意Lognormal的MTTF大于中位寿命,这是右偏分布的典型特征。很多新手直接拿失效时间的算术平均值当MTTF,在这个例子里均值是3492小时,和3960差了不少——错就错在忽略了取对数这一步的偏差修正。后面我会专门讲这个坑。
2.3 软件拟合怎么做更靠谱
用Minitab、JMP或者R的survival包拟合时,有几个设定直接影响结果,需要盯紧。
首先是删失数据(Censored Data)的标注。寿命试验里大量样品在试验截止时还没失效,只能记为右删失。如果不标注删失,软件会把这些“还没坏”当成“已坏”,β会被严重低估,B10寿命也会偏小。正确的做法是把每个样品的最后工作时间标为右删失。极大似然估计(MLE)天然支持删失数据,而最小二乘图估计法基本处理不了删失——这就是为什么正规项目里MLE是标准做法,图估计更多用于快速初步判断。
其次是样本量。少于5个失效样本时,MLE估计的β偏差很大,甚至可能算不出来。这时候建议用中位秩加最小二乘做一个“参考值”,同时用置信区间来框定不确定度,不要拿单点估计去拍板。经验上,要稳定估计两参数Weibull,至少需要10-15个失效样本;要稳定估计三参数Weibull,建议30个以上失效样本。
第三是拟合优度输出。软件会给出Anderson-Darling统计量、相关系数和似然值。我的习惯是同时看两个指标:概率图上的点是否围绕斜线随机散布,以及AD值相对大小。AD值越小越好,但不同分布之间的AD值只差一点时,不要纠结,选物理机理上合理的那一个。
3. 概率图读图技巧与多组数据对比
3.1 横纵轴刻度暗藏的信息
概率图最大的价值不是“拟合完看个R²”,而是快速读出工程关心的寿命指标。以Weibull概率纸为例,纵轴是累积失效概率F(t),通常用百分比刻度(1%、5%、10%、50%、63.2%、90%、99%),横轴是时间,通常用对数刻度。
几个关键读数点要形成肌肉记忆:
- 63.2%刻度线与拟合线的交点,对应η(特征寿命)。
- 50%刻度线与拟合线的交点,对应中位寿命。
- 10%刻度线对应的横坐标,就是B10寿命。
- 90%刻度线对应的横坐标,对应B90/B10的比值,这个比值越大说明个体寿命越分散。
如果拟合线较陡(β大),B10和B50之间距离很近,说明产品“要么不出事,一出事就集中在某个时间段”;如果拟合线平缓(β小),说明失效时间拉得很开,早期失效风险高。这个直观感受对管理层解释非常有用——不用讲公式,画两条线就能说清楚。
3.2 用同一张图对比不同方案
概率图另一个实用场景是横向对比。比如设计变更前后、两个供应商、不同应力水平下的同款产品,把各自的失效点(或拟合线)画在同一张Weibull概率图上,一眼就能看出谁优谁劣。
注意对比时有两个前提:一是样本量不能差太多,否则抽样波动会干扰判断;二是删失比例要相近,否则失效分布会被删失结构扭曲。有一次我在项目里对比两家供应商的电容寿命,A供应商样本20个全失效,B供应商样本20个只有5个失效,其余右删失。直接画概率图,B供应商的线看起来“特别好”,寿命特别长。但细看发现B的5个失效全是早期坏掉的样品,大批没失效的产品被试验截断了信息,真实寿命分布根本看不全。后来用MLE重新估计、并画出置信区间,才发现两家并没有显著差异。概率图对比只适合“快看”,拍板还是要靠定量分析。
3.3 读图时最容易犯的三个错
第一个错是把Lognormal概率图上的截距直接当中位寿命。Lognormal概率图的纵轴是标准正态分位数,横轴是ln(t),读中位寿命时要在纵轴50%分位(即Φ⁻¹(0.5)=0)处读横坐标,然后取指数。很多人忘了最后一步exp,读出来比真实值小两个数量级。
第二个错是忽略样本大小对尾部读数的影响。样本量只有8个时,概率图上90%以上的区域几乎没有数据支撑,拟合线外推到99%完全是“信仰之线”。B10等低分位数有实际数据支撑,可以放心用;B01这种极小概率指标,不要说“软件算出来就是准的”,一定要标注置信区间。
第三个错是混合失效数据直接拟合。概率图上数据点呈“S形”或者折线形,大概率是两种失效模式混在一起,比如电子产品的早期焊接不良+后期电解电容老化。正确做法是先做失效物理分析(FMA),按失效模式分组后分别拟合,或者用混合Weibull模型。直接硬拟合成一条线,B10会漂移到毫无工程意义的位置。
4. 完整案例拆解:从失效数据到寿命结论
4.1 试验条件与原始数据
我用一个典型的户外电源控制器寿命评估项目来走完整流程。背景:某款户外电源控制器,设计目标是B10寿命不低于2000小时,现需要验证。试验方案:25台样品在额定负载、高温环境应力下连续运行,定时巡检记录失效时间,试验截尾时间设为2400小时。
试验结束时,记录到12台失效,13台未失效(右删失)。失效时间(小时)为:180、420、780、1150、1520、1880、2100、2250、2330、2380、2400截尾前最后记录到2400、2400。为了方便说明,我把失效时间整理如下(已排序):180、420、780、1150、1520、1880、2100、2250、2330、2380、2400、2400。另有13台删失样品统一记为2400小时(截尾时间)。
注意一个细节:有两台失效时间恰好是2400,怎么判断是不是“删失”?规则很简单——巡检时发现已失效,记为失效;试验结束时仍未失效,记为删失。如果台架到2400小时停机检查时发现已经坏了,但具体坏的时间未知,这属于“区间删失”,纯软件默认处理不了,需要近似处理。本例为简化,假定2400小时前巡检发现失效,2400小时是精确观测。
4.2 分别拟合两种分布并对比
用MLE拟合两参数Weibull,得到β≈1.86,η≈2180小时。对同一个数据集拟合Lognormal,得到μ≈7.71,σ≈0.94。
先看拟合优度:Weibull的AD统计量约0.32,Lognormal约0.61,两者都能接受,但Weibull拟合明显更好。再看概率图,Weibull概率图上所有点都落在置信带内,无明显弯曲;Lognormal概率图在低失效概率段有个别点偏离。
从失效机理角度判断:电源控制器的失效模式主要是功率器件老化和电解电容损耗,这两者属于典型的“磨损累积”过程,Weibull的β>1正好对应这个物理图景。所以最终选择Weibull分布作为该产品的寿命模型。
4.3 关键指标换算与工程结论
选定Weibull之后,计算工程关心的几个指标:
- 特征寿命η = 2180小时
- B10寿命 = η·(-ln(0.9))^(1/β) = 2180×(0.10536)^(1/1.86)
指数部分算一下:1/1.86≈0.5376,0.10536^0.5376 = exp(0.5376×ln(0.10536)) = exp(0.5376×(-2.2504)) = exp(-1.2098) ≈ 0.298,所以B10 ≈ 2180×0.298 ≈ 650小时。
- 中位寿命 = η·(ln2)^(1/β) = 2180×(0.6931)^(0.5376) = 2180×exp(0.5376×(-0.3665)) = 2180×exp(-0.1970) ≈ 2180×0.821 ≈ 1790小时。
- MTTF = η·Γ(1+1/β) = 2180×Γ(1.538)。查Γ函数表,Γ(1.538)≈0.887,所以MTTF≈1934小时。
重要结论:B10寿命约650小时,远低于设计目标的2000小时,产品不合格。虽然MTTF接近2000、中位寿命也有1790,看起来“还行”,但B10是用户最关心的——最差的那10%产品什么时候开始坏?650小时意味着产品在质保期内会有一批失效,必须改进设计或物料。
这就是为什么要强调“不要只看MTTF”。MTTF是平均值,掩盖了个体差异;在可靠性工程里,低分位数寿命往往是决策的关键指标。如果你的产品客户最怕“早期失效”,B10甚至B01才是你的北极星指标。
4.4 风险提示:小样本下的不确定性
25台样品、12个失效,这个样本量在工程中算是“勉强可用”。MLE给出的点估计是β=1.86、B10=650小时,但置信区间很宽。用似然比法大致估算,B10的90%置信区间可能从400小时到1100小时。如果你的决策点是2000小时,无论怎么算都不合格,结论倒是稳的;但如果你的产品刚好在边界上,就一定要报告置信区间,并且建议补充试验样品。
我在实际项目里见过最典型的失败案例:某公司做新产品验证,20个样品全数试验,12个失效,MLE算出B10=850小时,看起来不错,于是放行量产。结果上市后早期失效率很高,客户投诉一大批。复盘时发现,那12个失效样品里混着5台装配不良导致的早期失效,属于另一条失效模式。用单一Weibull拟合时,β被早期失效拉低,B10被系统的“偶然失效”掩盖了。后来按失效模式分组重新拟合,装配不良组的β≈0.7,正常磨损组的β≈2.5,B10降到300小时,问题才暴露。这个教训让我养成了一个习惯:拟合之前,先做失效物理分析,至少把失效样品拆解分类,再决定数据怎么分组。
5. 可靠性指标换算的实战陷阱
5.1 B10、MTTF、中位寿命的计算公式汇总
很多工程师记不清换算公式,要么靠软件,要么临时翻书。我把常用的公式整理成表,建议存在手边:
| 指标 | Weibull(两参数) | Lognormal |
|---|---|---|
| 特征寿命η | η | exp(μ),即中位寿命 |
| 中位寿命t50 | η·(ln2)^(1/β) | exp(μ) |
| B10寿命 | η·(-ln0.9)^(1/β) | exp(μ - 1.2816σ) |
| MTTF | η·Γ(1+1/β) | exp(μ + σ²/2) |
| 失效率函数 | (β/η)·(t/η)^(β-1) | 先增后减,峰值后缓慢下降 |
注意Weibull的MTTF中的Γ函数,1+1/β的值介于1到2之间,Γ(1)=1、Γ(2)=1,所以当β在1到∞之间时,Γ(1+1/β)先降到约0.885(β≈1.4-1.5附近)再回升到1。很多Excel工程模板里直接写“MTTF=η”那是默认β=1的情况,如果β=2还用这个,MTTF高估了大约12%。
Lognormal的MTTF公式里的exp(σ²/2)是很多人的盲区。σ=1时,exp(0.5)=1.65,MTTF比中位寿命高65%。产品一致性越差,这个差距越大。也就是说,Lognormal的平均寿命和典型寿命根本不是一回事,给管理层汇报时别混着说。
5.2 特征寿命不等于平均寿命
这个坑我在不同公司见了不下五次。有人把Weibull的η直接当作“平均寿命”写在报告里,理由是“63.2%失效的时间点嘛,差不多就是平均寿命”。差远了。当β=1时,η等于MTTF,属于巧合;当β=2时,MTTF≈0.886η,差11%;当β=3时,Γ(1.333)≈0.893,MTTF≈0.893η,差10%左右。虽然差距不算夸张,但在严谨的工程报告里,把η写成MTTF会被审阅专家问住的。
5.3 “用算术平均当MTTF”为什么总是偏低
直接用失效时间的算术平均值估计MTTF,在小样本且存在右删失的情况下,几乎必然严重低估真实平均寿命。因为删失样品“还没坏”本质上提供了“它至少活到了那个时间”的信息,简单算术平均等于把这些信息丢掉了。
用前文的案例说明:25台样品、12台失效、13台截尾。失效时间的算术平均值=(180+420+780+1150+1520+1880+2100+2250+2330+2380+2400+2400)/12≈1600小时。但正确做法是用MLE考虑13台2400小时的删失数据,算出的MTTF≈1934小时,两者相差约20%。如果删失比例更高,差距会成倍放大——极端情况下一个失效都没有,算术平均值是“除以零”,而MLE能给出“MTTF至少大于某个值”的合理结论。
5.4 置信区间比点估计更重要
很多项目评审只关注B10是多少,却不问这个数字有多稳。样本量小的时候,点估计完全是“猜”,置信区间才是科学的结论。一般建议至少报告B10的90%置信区间,可以用软件自带的似然比区间,也可以用Bootstrap抽样近似。
举个例子,某样品量只有8个、失效5个的验证试验,MLE算出B10=420小时。Bootstrap 1000次之后,B10的90%区间是180到950小时——跨度5倍以上。如果有人拿420小时这个点估计去拍板“达标”,就是给自己挖坑。正确表述是:“基于当前数据,B10的90%置信区间为180-950小时,无法证实B10≥600小时的目标。”这比任何花哨的分析都更有说服力。
6. 实操中常见的坑与经验速查表
6.1 现象-原因-处理对照表
我在多个项目里积累了一些典型问题的排查经验,整理成速查表分享出来。
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| Weibull概率图呈S形 | 两种失效模式混合,如早期缺陷+磨损老化 | 按失效物理分组分别拟合,或用混合Weibull |
| β估计值异常大(>6) | 样本太少或时间刻度选错 | 增加样本,检查横轴是否用了自然时间而不是小时 |
| β估计值异常小(<0.5) | 大量删失未标注,或早期失效主导 | 核对数据表,将截尾样品标为右删失 |
| 两个分布拟合优度都很好 | 样本太少无法区分,或数据本身理论分辨力不足 | 结合失效机理选择,不强行用统计量区分 |
| 概率图中部拟合好,两端偏离 | 混合分布或存在异常早期失效 | 检查失效件分析记录,考虑剔除特殊失效后重新拟合 |
| B10随样本增加持续下降 | 早期失效被大样本充分暴露 | 说明设计本身存在缺陷,不是统计问题 |
| 删失数据占比过高(>80%) | 试验时间太短,信息量不足 | 增加试验时长或采用加速寿命试验设计 |
6.2 零失效数据的处理思路
最尴尬的情况是试验结束时一个样品都没坏。有人拿着“0失效”的报告说产品完美,这不是科学,是运气。零失效数据能提供的结论是“在试验时间t0内,可靠度下限是多少”,用Wilks公式或者贝叶斯方法可以估计。最简单的工程做法是:如果25台样品跑到t0全部未失效,且假定失效时间服从指数分布(β=1),则可靠度R(t0)的50%置信下限约为1-1/n≈96%。如果你想声明“B10大于t0”,需要更多的统计支撑,而不是拍脑袋。
我的建议是:设计试验时定一个“可接受失效数”,比如最多允许2台失效,如果超出就判定不合格;如果没超出,报告置信区间结论,不要试图证明“0失效=永远不失效”。
6.3 小样本项目怎么减少决策风险
样本量不够是工程常态,产品开发节奏快,谁也没时间等几千小时。我的经验是三个组合拳:
第一,用历史数据做先验。老产品、上一代产品的失效分布参数可以作为先验信息,用贝叶斯方法更新当前的试验数据,而不是从零开始估计。比如上一代Weibull的β长期稳定在2.0左右,当前的12个失效样本就不要浪费信息,可以把β的先验分布设为中心2.0的窄分布,B10的估计会比纯MLE稳定得多。
第二,做加速寿命试验。提高应力水平换算正常应力下的寿命,这需要知道加速模型(Arrhenius、逆幂律等)。但要注意,加速试验得到的失效模式必须和正常使用一致,否则整个外推全错。
第三,固定β,只估计η。在已知失效机理不变的前提下,用历史数据锁定β,试验数据只用来估计特征寿命,这样小样本下的不确定性会显著降低。比如已知该类电源控制器的β稳定在1.8-2.2之间,固定β=2做拟合,B10的置信区间会比同时估计两个参数窄得多。这个方法在IEC标准中也很常见,属于工程界的常规做法。
6.4 我自己坚持的几条习惯
文章最后分享几个我用血泪换来的工作习惯。
第一,每次拟合完都画概率图,哪怕数据已经整理成表格。概率图能看到表格看不出的模式:弯曲、离群点、阶梯状分布。我接手过别人“拟合完美”的项目,打开概率图一眼就看到三个孤零零的点飘在95%置信带外面,那是某一批来料异常导致的早期失效——如果只信软件输出,这批问题就会被埋掉。
第二,所有计算必须能手工复算一遍。不是说要徒手算回归,而是至少要会用公式核验关键数字的数量级。比如软件给出的B10是650小时,你心算框架是“η=2180、β=1.86,0.3倍左右,B10大约650”,如果软件给出6500,那一定是哪里标错了单位。
第三,报告里永远写清楚样本量、失效数、删失数、置信水平。这四个数字决定了结论的可靠性,很多人只看B10单点值,但对真正懂行的人来说,这些背景数字比B10本身更值得关注。数据不足时,明确写出不确定性,比给一个“精确到个位小时”的假数字专业得多。
可靠性分析不是数学考试,没有人会因为你的B10报得“漂亮”而奖励你,但一定会因为你的结论“经得起推敲”而信任你。分布只是工具,理解产品、理解数据、诚实面对不确定性,才是真正的功力所在。