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()