簡體   English   中英

在 scipy 中生成一個帕累托分布的隨機值

[英]generating one random value of a pareto distribution in scipy

我的代碼如下:

from scipy.stats import pareto

values=[0.001,0.1,0.0000000000000000000000000000000019,2.,3.,4.,5.,6.,7.,8.,9.,20.,40.,80.,160.]
for b in values:
    par = pareto.rvs(b,loc=0,scale=1, size=1)
    print(par[0])

這是 output:

2.4710696399005953e+244
4457.919153166827
inf
1.074371220057211
1.813450580334762
1.129136768422894
1.0493631839305024
1.0741561671750386
1.1357715848324075
1.3165771298337223
1.000756684137126
1.0001559590523508
1.0831688633464842
1.0001668159923398
1.006863649128853
/usr/local/lib/python3.6/dist-packages/scipy/stats/_continuous_distns.py:5414: RuntimeWarning: overflow encountered in power
  return pow(1-q, -1.0/b)

這不是我所期望的。 我認為帕累托分布給我的值接近給定值,有 80/20 的機會低於/超過給定值。 我還對變量 loc 和 scale 進行了一些實驗,但沒有得到好的結果。

您能否指出我的假設或我使用 scipy 帕累托模塊的方式有誤?

我最終為 1 生成了一個帕累托值並將其與給定值相乘。 參數比例我設置為 0.2。

from scipy.stats import pareto

values=[0.001,0.1,0.0000000000000000000000000000000019,2.,3.,4.,5.,6.,7.,8.,9.,20.,40.,80.,160.]
for b in values:
    par = pareto.rvs(1,loc=0,scale=0.2, size=1)
    par=par*b
    print(par[0])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM