Python威布尔分布

本文介绍了威布尔分布的数学特性,包括均值、方差、偏度和峰度的计算公式,并展示了如何在Python中使用numpy库生成威布尔分布的随机数。同时,通过对比分析,探讨了当a值变化时威布尔分布的形态变化,以及指数分布和拉普拉斯分布之间的联系。通过实例代码,呈现了不同分布的直方图,直观地展现了它们的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

威布尔分布及其性质

威布尔分布,即Weibull distribution,又被译为韦伯分布、韦布尔分布等,是仅分布在正半轴的连续分布。

numpy.random中,提供了按照威布尔分布生成的随机数生成器,并且提供了与威布尔分布关系密切的瑞利分布、指数分布以及拉普拉斯分布,列表如下

函数概率密度表达式
weibull(a[,scale])威布尔分布 p ( x ) = a λ ( x λ ) a − 1 e − ( x / λ ) a p(x)=\frac{a}{\lambda}(\frac{x}{\lambda})^{a-1}e^{-(x/\lambda)^a} p(x)=λa(λx)a1e(x/λ)a
rayleigh([scale])瑞利分布 p ( x ) = x λ 2 exp ⁡ [ − x 2 2 λ 2 ] p(x)=\frac{x}{\lambda^2}\exp[\frac{-x^2}{2\lambda^2}] p(x)=λ2xexp[2λ2x2]
exponential([scale])指数分布 f ( x ) = 1 λ exp ⁡ − x λ f(x)=\frac{1}{\lambda}\exp{-\frac{x}{\lambda}} f(x)=λ1expλx
laplace([loc, scale])拉普拉斯分布 f ( x ) = 1 2 λ exp ⁡ [ − ∣ x − μ ∣ λ ] f(x)=\frac{1}{2\lambda}\exp[-\frac{\vert x-\mu\vert}{\lambda}] f(x)=2λ1exp[λxμ]

上表中,概率密度表达式中的 λ \lambda λ即为函数中的scale μ \mu μ对应函数参数中的loc

根据概率密度表达式,可以发现,当 a = 2 a=2 a=2时,威布尔分布变为瑞利分布;当 a = 1 a=1 a=1时,变为指数分布。

若将指数分布的中心移动到 μ \mu μ,同时延展到整个坐标轴,那么就会变成Laplace分布。

威布尔分布具有如下性质:

其均值为

E = λ Γ ( 1 + 1 a ) E=\lambda\Gamma(1+\frac{1}{a}) E=λΓ(1+a1)

方差为

S 2 = λ 2 [ Γ ( 1 + 2 a ) − Γ ( 1 + 1 a ) 2 ] S^2=\lambda^2[\Gamma(1+\frac{2}{a})-\Gamma(1+\frac{1}{a})^2] S2=λ2[Γ(1+a2)Γ(1+a1)2]

偏度为

2 Γ ( 1 + 1 a ) 3 − 3 Γ ( 1 + 2 a ) Γ ( 1 + 1 a ) + Γ ( 1 + 3 a i = ) [ Γ ( 1 + 2 a ) − Γ ( 1 + 1 a ) 2 ] 3 / 2 \frac{2\Gamma(1+\frac{1}{a})^3-3\Gamma(1+\frac{2}{a})\Gamma(1+\frac{1}{a})+\Gamma(1+\frac{3}{ai=})}{[\Gamma(1+\frac{2}{a})-\Gamma(1+\frac{1}{a})^2]^{3/2}} [Γ(1+a2)Γ(1+a1)2]3/22Γ(1+a1)33Γ(1+a2)Γ(1+a1)+Γ(1+ai=3)

峰度为

− 3 Γ ( 1 + 1 a ) 4 + 6 Γ ( 1 + 2 a ) Γ ( 1 + 1 a ) 2 − 4 Γ ( 1 + 3 a ) Γ ( 1 + 1 a ) + Γ ( 1 + 4 a ) [ Γ ( 1 + 2 a ) − Γ ( 1 + 1 a ) 2 ] 2 \frac{-3\Gamma(1+\frac{1}{a})^4+6\Gamma(1+\frac{2}{a})\Gamma(1+\frac{1}{a})^2-4\Gamma(1+\frac{3}{a})\Gamma(1+\frac{1}{a})+\Gamma(1+\frac{4}{a})}{[\Gamma(1+\frac{2}{a})-\Gamma(1+\frac{1}{a})^2]^2} [Γ(1+a2)Γ(1+a1)2]23Γ(1+a1)4+6Γ(1+a2)Γ(1+a1)24Γ(1+a3)Γ(1+a1)+Γ(1+a4)

在Python中生成威布尔分布的随机数

接下来生成不同a值时的威布尔分布,

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure("Weibull Distribution")
for i in range(1,5):
    ax = fig.add_subplot(2,2,i)
    xs = np.random.weibull(i,size=1000)
    ax.set_title(f"a={i}")
    plt.hist(xs,100)

plt.show()

在这里插入图片描述

可以看到,随着 a a a不断变大,威布尔分布逐渐向右移动。

指数分布和拉普拉斯分布的对比

接下来对比一下指数分布和拉普拉斯分布

fig = plt.figure()

xs1 = np.random.exponential(1, size=1000)
xs2 = np.random.laplace(0, 1, size=1000)
ax1 = fig.add_subplot(1,2,1)
ax1.hist(xs1, 100)
ax1.set_title("exponential")

ax2 = fig.add_subplot(1,2,2)
ax2.hist(xs2, 100)
ax2.set_title("laplace")
plt.show()

效果为

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

微小冷

请我喝杯咖啡

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

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

打赏作者

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

抵扣说明:

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

余额充值