【问题标题】:generating one random value of a pareto distribution in scipy在 scipy 中生成一个帕累托分布的随机值
【发布时间】:2019-10-22 09:17:01
【问题描述】:

我的代码如下:

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

这是输出:

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 pareto 模块的方式有什么错误?

【问题讨论】:

    标签: python scipy statistics pareto-chart


    【解决方案1】:

    我最终生成了一个 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])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多