numpy.random.RandomState.pareto#

方法

random.RandomState.pareto(a, size=None)#

從具有指定形狀的 Pareto II 或 Lomax 分佈中抽取樣本。

Lomax 或 Pareto II 分佈是一種位移的 Pareto 分佈。經典 Pareto 分佈可以通過將 Lomax 分佈加 1 並乘以尺度參數 m 獲得(請參閱註釋)。Lomax 分佈的最小值為零,而經典 Pareto 分佈的最小值為 mu,其中標準 Pareto 分佈的位置為 mu = 1。Lomax 也可以被視為廣義 Pareto 分佈(在 SciPy 中可用)的簡化版本,其中尺度設定為 1,位置設定為零。

Pareto 分佈必須大於零,並且上方無界。它也被稱為「80-20 法則」。在這個分佈中,80% 的權重位於範圍的最低 20% 中,而其他 20% 填充範圍的剩餘 80%。

註釋

新程式碼應使用 pareto 方法,此方法屬於 Generator 實例;請參閱快速入門

參數:
a浮點數或浮點數的類陣列

分佈的形狀。必須為正數。

size整數或整數元組,可選

輸出形狀。如果給定的形狀是例如 (m, n, k),則會抽取 m * n * k 個樣本。如果 size 為 None(預設值),則當 a 為純量時,會返回單個值。否則,會抽取 np.array(a).size 個樣本。

返回值:
outndarray 或純量

從參數化的 Pareto 分佈中抽取的樣本。

另請參閱

scipy.stats.lomax

機率密度函數、分佈或累積密度函數等等。

scipy.stats.genpareto

機率密度函數、分佈或累積密度函數等等。

random.Generator.pareto

新程式碼應使用的方法。

註釋

Pareto 分佈的機率密度為

\[p(x) = \frac{am^a}{x^{a+1}}\]

其中 \(a\) 是形狀參數,而 \(m\) 是尺度參數。

Pareto 分佈以義大利經濟學家 Vilfredo Pareto 的名字命名,是一種冪律機率分佈,在許多現實世界問題中很有用。在經濟學領域之外,它通常被稱為 Bradford 分佈。Pareto 開發了該分佈來描述經濟中財富的分配。它也被發現可用於保險、網頁訪問統計、油田規模和許多其他問題,包括 Sourceforge 中專案的下載頻率 [1]。它是所謂的「肥尾」分佈之一。

參考文獻

[1]

Francis Hunt 和 Paul Johnson,關於 Sourceforge 專案的 Pareto 分佈。

[2]

Pareto, V. (1896). Course of Political Economy. Lausanne.

[3]

Reiss, R.D., Thomas, M.(2001), Statistical Analysis of Extreme Values, Birkhauser Verlag, Basel, pp 23-30.

[4]

Wikipedia, “Pareto distribution”, https://en.wikipedia.org/wiki/Pareto_distribution

範例

從分佈中抽取樣本

>>> a, m = 3., 2.  # shape and mode
>>> s = (np.random.pareto(a, 1000) + 1) * m

顯示樣本的直方圖,以及機率密度函數

>>> import matplotlib.pyplot as plt
>>> count, bins, _ = plt.hist(s, 100, density=True)
>>> fit = a*m**a / bins**(a+1)
>>> plt.plot(bins, max(count)*fit/max(fit), linewidth=2, color='r')
>>> plt.show()
../../../_images/numpy-random-RandomState-pareto-1.png