韦伯分布(威布尔分布,Weibull distribution)

韦伯分布(Weibull distribution) 一般用来统计可靠性或寿命检验时用,例如:预计在有效寿命阶段有多少次保修索赔?预计将在 8 小时老化期间失效的保险丝占多大百分比?

在管理科学与工程领域,见到一些学者假定产品的需求为韦伯分布。因为正态分布或者泊松分布过于理想化,韦伯分布相对来说更接近现实一些(从概率密度函数来看,韦伯分布一般具有长尾分布,即右偏分布的特点)。

韦伯分布的概率密度函数为:

f ( x , λ , k ) = { k λ ( x λ ) k − 1 e − ( x / λ ) k x ≥ 0 0 x < 0 f(x, \lambda, k)=\begin{cases} \frac{k}{\lambda}(\frac{x}{\lambda})^{k-1}e^{-(x/\lambda)^k}\quad & x\geq0\\ 0 & x<0 \end{cases} f(x,λ,k)={λk(λx)k1e(x/λ)k0x0x<0

其中, x x x 是随机变量, λ \lambda λ 是比例参数(scale), k k k 是形状参数(shape), k = 1 k=1 k=1 时,韦伯分布是指数分布。而如果 λ = 1 \lambda=1 λ=1 时,则称为最小化的韦伯分布(weibull_min,python 中的 scipy 所带,此时 − x -x x 对应的分布为最大化的韦伯分布,weibull_max,普通韦伯分布在 scipy 中的名称为 exponweib )

均值:
λ Γ ( 1 + 1 k ) \lambda\Gamma(1+\frac{1}{k}) λΓ(1+k1)

方差:
λ 2 [ Γ ( 1 + 2 k ) − ( Γ ( 1 + 1 k ) ) 2 ] \lambda^2\left[\Gamma(1+\frac{2}{k})-\left(\Gamma(1+\frac{1}{k})\right)^2\right] λ2[Γ(1+k2)(Γ(1+k1))2]

其中, Γ \Gamma Γ 为伽马函数(伽马函数并不是完全单调上升的,分界点为 1.4616,小于 1.4616 时单调下降),
Γ ( z ) = ∫ 0 ∞ t z − 1 e t d t \Gamma(z)=\int_0^\infty\frac{t^{z-1}}{e^t}dt Γ(z)=0ettz1dt

用 python 画韦伯分布概率密度曲线:

import numpy as np
import matplotlib.pyplot as plt


# define the pdf of weibull distribution
def weib(x, scale, shape):
    return (shape / scale) * (x / scale)**(shape - 1) * np.exp(-(x / scale) ** shape)


scale = 50
shape = 1.5
x = np.arange(1, scale*2)
y = np.zeros(len(x))  # [0 for i in range(len(x))]
for i in range(len(x)):
    y[i] = weib(x[i], scale, shape)

scale = 50
shape = 2.5
y1 = np.zeros(len(x))  # [0 for i in range(len(x))]
for i in range(len(x)):
    y1[i] = weib(x[i], scale, shape)
scale = 50
shape = 4
y2 = np.zeros(len(x))  # [0 for i in range(len(x))]
for i in range(len(x)):
    y2[i] = weib(x[i], scale, shape)


scale = 30
shape = 2.5
y3 = np.zeros(len(x))  # [0 for i in range(len(x))]
for i in range(len(x)):
    y3[i] = weib(x[i], scale, shape)
scale = 70
shape = 2.5
y4 = np.zeros(len(x))  # [0 for i in range(len(x))]
for i in range(len(x)):
    y4[i] = weib(x[i], scale, shape)


plt.subplot(2, 1, 1)
plt.plot(x, y, 'r', label='scale=50, shape=1.5')
plt.plot(x, y1, 'b', label='scale=50, shape=2.5')
plt.plot(x, y2, 'g', label='scale=50, shape=4')
plt.legend()
plt.subplot(2, 1, 2)
plt.plot(x, y3, 'r', label='scale=30, shape=2.5')
plt.plot(x, y1, 'b', label='scale=50, shape=2.5')
plt.plot(x, y4, 'g', label='scale=70, shape=2.5')
plt.legend()
plt.show()

在这里插入图片描述
从图形可以看出,不论增加比例参数(均值也会随着增加),还是增加形状参数(均值一般也会随着增加),分布都更加类似正态分布。

  • 23
    点赞
  • 250
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
Matlab中的韦伯分布Weibull distribution)是可靠性分析和寿命检验的理论基础。韦伯分布的相关代码可以通过引用中的韦伯分布测试代码来实现。在这个测试中,通过指定参数来生成韦伯分布的随机样本,并使用最小二乘法来估计参数。具体的步骤如下: 1. 首先,我们需要定义一个韦伯分布的对象,可以使用Matlab中的ExponentiatedWeibull类来实现。 2. 接下来,我们需要生成一定数量的韦伯分布的随机样本。你可以通过设定样本数量n和样本个数nOfSamples来控制生成的样本数量。 3. 然后,我们需要创建一个空数组来保存估计的参数值。在这个例子中,我们需要保存alpha、beta和delta三个参数的估计值。 4. 对于每个样本,我们使用fitDist函数来对韦伯分布进行参数估计。这里使用了加权最小二乘法(WLS)作为参数估计的方法。 5. 最后,我们将估计得到的参数值保存到相应的数组中。 通过以上步骤,你可以得到一个包含估计的韦伯分布参数的数组(alphaEstimated、betaEstimated和deltaEstimated)。这些参数可以用来描述韦伯分布的特征。 请注意,这个例子只是展示了在Matlab中如何进行韦伯分布的参数估计,实际应用中可能还需要进行更多的数据分析和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【基础教程】Matlab实现指数威布尔分布](https://blog.csdn.net/qq_59747472/article/details/126937432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心态与习惯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值