當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy random.mtrand.RandomState.gumbel用法及代碼示例


用法:

RandomState.gumbel(loc=0.0, scale=1.0, size=None)

從Gumbel分布中抽取樣本。

從具有指定位置和比例的Gumbel分布中抽取樣本。有關Gumbel分布的更多信息,請參見下麵的注釋和參考。

參數:
loc float 或 array_like of floats, 可選參數

分布方式的位置。默認值為0。

scale float 或 array_like of floats, 可選參數

分布的比例參數。默認值為1。必須為非負數。

size int 或 tuple of ints, 可選參數

輸出形狀。如果給定的形狀是(m, n, k), 然後m * n * k抽取樣品。如果尺寸是None(默認),如果返回一個值locscale都是標量。除此以外,np.broadcast(loc, scale).size抽取樣品。

返回值:
out ndarray或標量

從參數化的Gumbel分布中抽取樣本。

注意:

Gumbel(或最小極值(SEV)或I最小極值類型)分布是用於建模極值問題的一類廣義極值(GEV)分布之一。 Gumbel是I極值類型分布的一種特例,用於從具有“exponential-like”尾部的分布中獲得最大值。

Gumbel分布的概率密度為

p(x) = \frac{e^{-(x - \mu)/ \beta}}{\beta} e^{ -e^{-(x - \mu)/
\beta}},

哪裏\mu是模式,位置參數,以及\beta是scale參數。

Gumbel(以德國數學家Emil Julius Gumbel的名字命名)在水文學中很早就被用來模擬洪水事件的發生。它也用於建模最大風速和降雨量。它是“fat-tailed”分布-分布尾部發生事件的概率大於使用高斯分布的事件,因此令人驚訝地頻繁發生了100年的洪水。洪水最初被建模為高斯過程,這高估了極端事件的發生頻率。

它是一類極值分布,即通用極值(GEV)分布,其中還包括Weibull和Frechet。

該函數的平均值為\mu + 0.57721\beta和方差\frac{\pi^2}{6}\beta^2

參考文獻:

[1]E. J. Gumbel,“極端情況的統計”,紐約:哥倫比亞大學出版社,1958年。
[2]Reiss,R.-D.和Thomas M.,“來自保險,金融,水文學和其他領域的極值統計分析”,巴塞爾:Birkhauser Verlag,2001年。

例子:

從分布中抽取樣本:

>>> mu, beta = 0, 0.1 # location and scale
>>> s = np.random.gumbel(mu, beta, 1000)

顯示樣本的直方圖以及概率密度函數:

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 30, density=True)
>>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta)
...          * np.exp( -np.exp( -(bins - mu) /beta) ),
...          linewidth=2, color='r')
>>> plt.show()
../../../_images/numpy-random-mtrand-RandomState-gumbel-1_00_00.png

說明高斯過程如何產生極值分布,並與高斯進行比較:

>>> means = []
>>> maxima = []
>>> for i in range(0,1000) :
...    a = np.random.normal(mu, beta, 1000)
...    means.append(a.mean())
...    maxima.append(a.max())
>>> count, bins, ignored = plt.hist(maxima, 30, density=True)
>>> beta = np.std(maxima) * np.sqrt(6) / np.pi
>>> mu = np.mean(maxima) - 0.57721*beta
>>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta)
...          * np.exp(-np.exp(-(bins - mu)/beta)),
...          linewidth=2, color='r')
>>> plt.plot(bins, 1/(beta * np.sqrt(2 * np.pi))
...          * np.exp(-(bins - mu)**2 / (2 * beta**2)),
...          linewidth=2, color='g')
>>> plt.show()
../../../_images/numpy-random-mtrand-RandomState-gumbel-1_01_00.png

注:本文由純淨天空篩選整理自 numpy.random.mtrand.RandomState.gumbel。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。