上一个主题

numpy.random.wald

下一个主题

numpy.random.zipf

numpy.random.weibull

numpy.random.weibull(a, size=None)

从威布尔分布中提取样本。

从具有给定形状参数的单参数威布尔分布中提取样本 a .

x=(-ln(u))^ 1/a

这里,u是从(0,1)上的均匀分布中得出的。

更常见的2参数威布尔,包括一个尺度参数 \lambda 只是 X = \lambda(-ln(U))^{{1/a}} .

参数:
a : 浮点数或类似浮点数的数组

分布的形状参数。必须为非负。

size : int或int的元组,可选

输出形状。如果给定的形状是,例如, (m, n, k) 然后 m * n * k 取样。如果尺寸是 None (默认),如果 a 是标量。否则, np.array(a).size 取样。

返回:
out : ndarray或scalar

从参数化威布尔分布中提取样本。

笔记

威布尔(或最小值的III型渐近极值分布、SEV III型或Rosin-Rammler分布)是一类用于建模极值问题的广义极值(GEV)分布之一。这个类包括gumbel和frechet分布。

威布尔分布的概率密度是

p(x)=frac a lambda(frac x lambda)^ a-1 e ^-(x/lambda)^a,

在哪里? a 是形状和 \lambda 规模。

函数的峰值(模式)为 \lambda(\frac{{a-1}}{{a}})^{{1/a}} .

什么时候? a = 1 威布尔分布降为指数分布。

工具书类

[1]Waloddi Weibull,斯德哥尔摩皇家技术大学,1939年,“材料强度的统计理论”,Ingeniorsvetenskapasakademiens Handlingar第151号,1939年,斯德哥尔摩,Stabens Litografiska Anstalts将军。
[2]Waloddi-Weibull,“广泛适用的统计分布函数”,《应用力学杂志》ASME论文1951。
[3]维基百科,“威布尔分布”,https://en.wikipedia.org/wiki/weibull_distribution

实例

从分发中抽取样本:

>>> a = 5. # shape
>>> s = np.random.weibull(a, 1000)

显示样本的直方图,以及概率密度函数:

>>> import matplotlib.pyplot as plt
>>> x = np.arange(1,100.)/50.
>>> def weib(x,n,a):
...     return (a / n) * (x / n)**(a - 1) * np.exp(-(x / n)**a)
>>> count, bins, ignored = plt.hist(np.random.weibull(5.,1000))
>>> x = np.arange(1,100.)/50.
>>> scale = count.max()/weib(x, 1., 5.).max()
>>> plt.plot(x, weib(x, 1., 5.)*scale)
>>> plt.show()
../../_images/numpy-random-weibull-1.png