使用EXCEL快速实现二参数威布尔分布拟合

最近我在公司里做了一个小项目,帮助产品部门建立一个数据模型来预测产品的维修率和返修成本,其中有一步需要估计二参数威布尔分布的参数。在网上看了一些论文,威布尔参数估计的方法有很多种,比如常见的有极大似然估计法,最大相关系数优化法,最小二乘法等等。 因为考虑我目前仅是做模型验证,因此我采用了计算量相对比较小的最小二乘法进行估算,并在EXCEL里利用趋势图直接获得相关参数。

第一部分 威布尔分布(Weibull Distribution)介绍

威布尔分布是可靠性分析和寿命检验的理论基础。
威布尔分布是三参数的连续性的概率分布,其概率密度为:
f ( t , m , η , γ ) = ( η / m ) ( t − γ η ) ( m − 1 ) e − ( t − γ η ) m ( t > 0 , m > 0 ) f(t, m, \eta, \gamma) = (\eta/m)(\frac{t-\gamma} {\eta})^{(m-1)}e^{-(\frac{t-\gamma}{\eta})^m} (t>0, m> 0) f(t,m,η,γ)=(η/m)(ηtγ)(m1)e(ηtγ)mt>0,m>0
t 是自由变量,一般表示产品工作的时间, η \eta η 是比例参数(scale parameter), m m m是形状参数(shape parameter), γ \gamma γ是位移参数(location parameter)。
此处,我们研究产品的返修时间是以月为单位计时,从产品出厂第一个月就可能发生返修,因此我们可以假设 γ \gamma γ为0,概率分布退化为二参数形式:
f ( t , m , η ) = ( η / m ) ( t η ) ( m − 1 ) e − ( t η ) m ( m > = 0 ) f(t, m, \eta) = (\eta/m)(\frac{t}{\eta})^{(m-1)}e^{-(\frac{t}{\eta})^m} (m>= 0) f(t,m,η)=(η/m)(ηt)(m1)e(ηt)mm>=0
m > 1 m>1 m>1时, 图像如下图中红线,呈现为先递,增达到一个峰值后再递减。当 m < 1 m<1 m<1时, 图像则呈现如下图中蓝线,呈现为单调递减函数。
我们在研究在保修期内的产品从出厂到返修中间间隔的月份数的分布时1,发现其曲线和威布尔分布当 m > 1 m>1 m>1时的形态非常相似。
在这里插入图片描述

第二部分 最小二乘法拟合威布尔分布推导

我使用产品返修记录作为实验数据,来估算威布尔分布的两个参数 η \eta η m m m,首先要考虑的是威布尔分布是一个非线性的模型,我们想使用最小二乘数法的话,首先就要对它做一个线性化的变化,使之呈现 Y = A X + B Y=AX+B Y=AX+B的形式。

让我们先来看一下威布尔分布的累计分布函数
F ( t ) = 1 − e − ( i / η ) m ( t > 0 , m > 0 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 1 ) F(t) = 1-e^{-(i/\eta)^m} (t >0, m > 0) ..............................(1) F(t)=1e(i/η)m(t>0,m>0)..............................(1)
设有n个实验样本,按失效时间先后得到寿命数据 t i t_i ti,对应的第 i i i个样本累计失效概率 F ( t i ) F(t_i) F(ti),可以使用中位秩近似算法 F ( t i ) = i − 0.3 n + 0.4 F(t_i)=\frac {i-0.3}{n+0.4} F(ti)=n+0.4i0.3来估算。

在得到失效时间和累计失效概率估值后,即可使用最小二乘法来进行参数估计了。
首先,对(1) 式左右两边分别求两次对数得到:
l n ( l n ( 1 1 − F ( t ) ) ) = m l n ( t ) − m l n ( η ) ln(ln(\frac1{1-F(t)}) )= mln(t)- mln(\eta) ln(ln(1F(t)1))=mln(t)mln(η)
y i = l n ( l n ( 1 1 − F ( t i ) ) ) y_i =ln(ln(\frac1{1-F(t_i)}) ) yi=ln(ln(1F(ti)1)) x i = l n ( t i ) x_i=ln(t_i) xi=ln(ti) a = m a = m a=m b = m l n ( η ) b=mln(\eta) b=mln(η), 原式可以变换成 y i = a x i + b y_i=ax_i+b yi=axi+b

我们需要找到这样一组(a,b)使得 L = Σ i = 1 n ( y i ′ − y i ) 2 L=\Sigma_{i=1}^n{(y_i'-y_i)^2} L=Σi=1n(yiyi)2最小化, y i ′ y_i' yi是使用中位秩近似算法得到的 F ( t i ) F(t_i) F(ti)代入 l n ( l n ( 1 1 − F ( t i ) ) ) ln(ln(\frac1{1-F(t_i)}) ) ln(ln(1F(ti)1))得到的结果,的此处的 L L L可以看出来是方差和。
L = Σ i = 1 n ( y i ′ − y i ) 2 L=\Sigma_{i=1}^n{(y_i'-y_i)^2} L=Σi=1n(yiyi)2
= Σ i = 1 n ( y i ′ − a x i − b ) 2 . . . . . . . . . . . . . . . . . . . . . . . . ( 2 ) =\Sigma_{i=1}^n{(y_i'-ax_i-b)^2}........................(2) =Σi=1n(yiaxib)2........................(2)
(2) 是一个二次函数,通过求极值的方法可以求得其极值点。为了方便运算,我们采用矩阵表达方式:
A = ( a b ) A = \left ( \begin{matrix}a\\ b\end{matrix} \right ) A=(ab)
X = ( x 1 . . . 1 x n . . . 1 ) X = \left ( \begin{matrix} x_1...1\\ x_n...1\\ \end{matrix} \right ) X=(x1...1xn...1)
Y = ( y 1 . . . y n ) Y=\left ( \begin{matrix} y_1\\ ... \\ y_n\\ \end{matrix} \right ) Y= y1...yn
那么 ( 2 ) (2) (2)就可以表示成 L = ( Y − X A ) T ( Y − X A ) L =(Y-XA)^T(Y-XA) L=(YXA)T(YXA),为求 L L L的最小值,对 A A A求导,得到 d L d A = X T ( Y − X A ) = 0 \frac{dL}{dA}=X^T(Y-XA)=0 dAdL=XT(YXA)=0,求得 A = ( X T X ) − 1 X T Y A=(X^TX)^{-1}X^TY A=(XTX)1XTY
由此,我们可以使用EXCEL来求解A。求得 A = ( a b ) A= \left ( \begin{matrix}a\\ b\end{matrix} \right ) A=(ab) 后, m = a , η = e b m m=a, \eta=e^{\frac{b}{m}} m=a,η=emb

第三部分 使用EXCEL来计算

在这里插入图片描述

(1) A7:A56记录了样本序号,一共50个样本,分别标记为1…50。

(2) B7:B56将失效时间 t t t依次填入。

(3) C7:C56C7填入公式 =LN(B7), 并扩展至C56

(3) D7:D56全部填入1,和C7:C56构成了上一章提到的 X X X

(4) E7:E56E7填入公式 =C7*C7,并扩展至E56

(5) F7:F56填写中位秩近似值,在F7中填入公式 =(A7-0.3)/(MAX($A$7:$A$56)+0.4) 并扩展至 F56

(6) G7:G56填写Y值,在G7中填入公式 =LN(LN(1/(1-F7))),并扩展至 G56

(7) H7:I8是计算得到的 X T X X^TX XTXH7的公式为 =SUMPRODUCT(C7:C56,C7:C56)I7的公式为 =SUMPRODUCT(C7:C56,D7:D56)H8的公式为 =SUMPRODUCT(C7:C56,D7:D56)I8的公式为 =SUMPRODUCT(D7:D56,D7:D56)

(8) J7:K8 ( X T X ) − 1 (X^TX)^{-1} (XTX)1,使用数组函数 {=MINVERSE(H7:I8)} 得到2x2的矩阵。

(9) L7:M56 ( X T X ) − 1 X T (X^TX)^{-1}X^T (XTX)1XTL7输入公式 =SUM(C7*$J$7,D7*$K$7) 并且扩展至L56M7 输入公式 =SUM(C7*$J$8,D7*$K$8) 并且扩展至M56

(10) N7 a a a,输入公式 =SUMPRODUCT(G7:G56,L7:L56)

(11) O7 b b b,输入公式 =SUMPRODUCT(G7:G56,M7:M56)

(12) B2 m m m,输入公式 =N7

(13) B3 η \eta η,输入公式 =EXP(-O7/B2)

(14) Q7:Q56用于做你和评估,Q列为输入 t t tR列为 f ( t ) f(t) f(t)S列为样本数据的分布,作图显示 f ( t ) f(t) f(t)和样本数据的匹配程度。
在这里插入图片描述

参考文献

[1] 史景钊 花恒明 李祥付 威布尔分布参数估计在EXCEL中的实现方法研究 中国科技论文在线 (http://www.paper.edu.cn) TB114.3
[2] 包小庆 刘志强 吴永忠 李冬梅 (2017)双参数威布尔分布函数的确定及曲线拟合 能源与环境 2017.NO.4 8-9


  1. 出厂当月记为0, 次月为1, 以此类推。统计每一台返修机的返修月份和出场月份的差获得间隔月份。 ↩︎

  • 7
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
参数威布尔分布是一种常用的概率分布函数,通常用于拟合实际数据,例如寿命数据、可靠性数据等。下面我将介绍三参数威布尔分布拟合方法。 1. 三参数威布尔分布的定义 三参数威布尔分布包含三个参数:尺度参数(scale parameter)a、形状参数(shape parameter)b和位置参数(location parameter)c。它的概率密度函数为: f(x)= (b/a)*((x-c)/a)^(b-1)*exp(-((x-c)/a)^b) 其中,x为随机变量的取值,a、b、c为分布的参数。 2. 三参数威布尔分布拟合方法 三参数威布尔分布拟合可以使用最大似然估计法(maximum likelihood estimation,MLE)来进行。通常,可以使用MATLAB等软件进行拟合。 具体步骤如下: 2.1 导入数据 将需要拟合的数据导入MATLAB,例如通过Excel表格导入。 2.2 构建概率密度函数 根据三参数威布尔分布的概率密度函数,构建MATLAB函数。 ``` function y = weibull3pdf(x,a,b,c) y = (b/a)*((x-c)/a).^(b-1).*exp(-((x-c)/a).^b); end ``` 2.3 构建负对数似然函数 根据三参数威布尔分布的概率密度函数和数据,构建负对数似然函数。负对数似然函数是指将似然函数取负数并取对数。在MATLAB中,可以使用fminsearch函数来最小化负对数似然函数。 ``` function nll = weibull3nll(param,x) a = param(1); b = param(2); c = param(3); nll = -sum(log(weibull3pdf(x,a,b,c))); end ``` 2.4 拟合数据 使用fminsearch函数,拟合数据。 ``` x = data; % 导入数据 param0 = [1,1,1]; % 初始参数值 param = fminsearch(@(param) weibull3nll(param,x),param0); ``` 其中,param为拟合得到的三个参数值:尺度参数a、形状参数b和位置参数c。 3. 检验拟合效果 将拟合得到的三个参数带入概率密度函数,绘制拟合曲线。通过比较拟合曲线和实际数据,可以评估拟合效果。 以上是三参数威布尔分布拟合方法,希望能对您有所帮助。如果您有其他问题或需要更深入的讨论,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小白的逆袭日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值