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%。
- 參數:
- 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()