威布尔分布的参数估计

来源:互联网 发布:移动云商城 源码下载 编辑:程序博客网 时间:2024/05/01 12:58

1.      三参数威布尔分布的密度函数和累积密度函数


其中gama位置参数,且gama>0; 表示设备在[0, gama]之间不会发生故障

eta是比例参数,表示函数的缩放

beta是形状参数,表示函数的走势,beta>1,表示故障率随时间增加,beta<1, 表示故障率随时间减小

2.    参数估计中的gama估计相对简单,一般取设备开始使用到第一次发生故障的最短时间,所以,所有的故障发生时间减去gama,故障率就服二参数威布尔分布。

所以这里为了简单且不失泛化能力,假设为0.

3.     下面证明beta和eta之间存在线性关系

gama=0,

由(2)得到



可以看到,最后一个公式是一个与参数有关的直线,所以可以使用线性拟合的方法估计参数。

4.       威布尔分布的参数估计原理


根据上面的讨论,如上式所示,如果我们有一些故障发生的时间点 x, 且知道对应的F(x)的值,就相当于知道了一些二维的数据点,可以用最小二乘法估计beta和eta。

5.      X和F(x)的获取

X是设备发生故障的时间点,这可以从故障数据中获得。假如取100次故障发生的时间点,则:

X = [x1,x2,x3,…,x100]

其中x1<x2<x3<…<x100

这里故障发生的时间点是按照时间顺序排列的

同样,F(xi) = P(x<xi)

F(xi)是截止到时间xi,设备发生故障的概率

我们这里认为,F(x1)<F(x2)<…<F(x100),且F(x1)=0, F(x100)=1

那么F(xi)是多少呢?

这里取F(xi)=i/(n+1),基本符合上面的要求

6.      参数估计的过程如下


7. 举例

使用matlab的随机生成函数,生成100个服从威布尔分布的时间点

X = wblrnd(1,2,100,1)

这里beta=2, eta=1;

下面按照上面的方法,计算beta和eta,计算结果如下,

beta= 2.05994, eta=0.982495

计算过程参考代码

8.  威布尔参数的估计有多种方法,最小二乘是精度和复杂度折中的方法。

代码如下

// 威布尔.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <math.h>using namespace std;int main(){//发生故障的时间double time[] = {0.1100,0.1430,0.1468,0.1939,    0.2509,    0.2717,    0.2823,0.3012,    0.3162,    0.3164,    0.3182,0.3398,    0.3471,    0.3493,    0.3639,    0.3892,    0.4114,    0.4569,    0.4651,    0.4710,    0.4774,    0.4997,0.5437,    0.5606,    0.5717,    0.5792,    0.5820,    0.5838,    0.5987,    0.6213,    0.6220,    0.6519,    0.6630,0.6867,    0.6885,    0.6941,    0.7032,    0.7114,    0.7207,    0.7298,    0.7398,    0.7419,    0.7730,    0.7770,0.7934,    0.8073,    0.8231,    0.8320,    0.8325,    0.8396,    0.8447,    0.8459,    0.8463,    0.8568,    0.8676,0.8678,    0.8826,    0.9075,    0.9115,    0.9184,    0.9261,    0.9459,    0.9631,    0.9855,    1.0006,    1.0236,    1.0453,    1.0470,    1.0692,    1.0806,    1.0954,    1.1023,    1.1565,    1.1570,    1.1575,    1.1638,    1.1947,1.1994,    1.2094,    1.2114,    1.2165,    1.2197,    1.2273,    1.2536,    1.2730,    1.2790,    1.2994,    1.3033,1.3296,    1.3357,    1.4110,    1.4636,    1.4823,    1.4957,    1.5217,    1.5681,    1.8103,    1.8678,    1.8796,1.8846};//100个故障点int num_point = 100;//下面计算文档中对应的公式double xmean = 0.0;double ymean = 0.0;double beta1 = 0.0;double beta21 = 0.0;double beta22 = 0.0;double beta3 = 0.0;double beta4 = 0.0;double beta2 = 0.0;for(int i = 0; i < num_point; i++){xmean += log(log(1.0/(1-(i+1)*1.0/(num_point+1))));ymean += log(time[i]);beta1 += log(time[i])*log(log(1.0/(1-(i+1)*1.0/(num_point+1))));beta21 += log(log(1.0/(1-(i+1)*1.0/(num_point+1))));beta22 += log(time[i]);beta3 += log(time[i])*log(time[i]);beta4 += log(time[i]);}ymean = ymean/num_point;xmean = xmean/num_point;beta1 = beta1 * num_point;beta2 = beta21*beta22;beta3 = beta3*num_point;beta4 = beta4*beta4;double beta = (beta1-beta2)/(beta3-beta4);double eta = exp(ymean - xmean/beta);cout << "beta: " << beta << "eta: " << eta;return 0;}

9.参考文献

Methods for Estimating the Parameters of the Weibull Distribution

Mohammad A. Al-Fawzan


1 0
原创粉丝点击