【问题标题】:A three-parameter Pareto distribution in scipy.statsscipy.stats 中的三参数帕累托分布
【发布时间】:2018-08-21 10:49:00
【问题描述】:

我正在尝试使用scipy.stats.pareto 定义帕累托分布,但我使用的模型是完全不同的形式,它具有三个参数,其中f(x) = (gamma(alpha + k) * lambda**alpha * x**(k - 1)) / (gamma(alpha) * gamma(k) * (lambda + x)**(alpha + k))

我还尝试设置 k = 1 以将分布减少到 2 参数分布,其中 f(x) = (alpha * lambda**alpha) / (lambda + x)**(alpha + 1)。但是,我仍然无法将参数放入scipy.stats.pareto

我创建了一个案例,其中 alpha = 6.54545lambda = 2772.72727 应该给出 mean = 500std = 600,但我得到的是 Mean = 3272.7276793445976std = 600.0005828803438。我知道这是由不同版本的 pdf 引起的,但我想知道是否可以使用 scipy.stats.pareto 函数或任何内置函数,而不是为此发行版编写新函数。

【问题讨论】:

  • 什么是 alpha 和 lambda,x 的范围是多少?请注意,PDF 应集成到分布范围内的一个。
  • 你的意思是2参数的吗?所有 alpha、lambda、k 和 x > 0,并且 pdf 来自 IFoA 的公式,所以我想它应该整合为一个。

标签: python scipy


【解决方案1】:

您描述的分布通常称为Beta prime distribution,在SciPy 中实现为betaprime。它比Pareto distribution 更通用。人们可能将其称为广义帕累托分布,但我不会,因为该术语也意味着something else。请问我们可以标准化维基百科对这些名称的使用吗?

betaprime 的相关参数是abscale,从您的符号转换为a=kb=alphascale=lamda

一个演示:

from scipy.stats import betaprime
alpha = 6.54545
lamda = 2772.72727
k = 1
print(betaprime.mean(k, alpha, scale=lamda))
print(betaprime.std(k, alpha, scale=lamda))

打印

500.0004093445978
600.0005828803438

【讨论】:

  • 非常感谢!我确实想遵循维基百科的名称,但问题是我以前从未听说过这个名称或分布,我看到的唯一来源是公式表,它被标记为帕累托分布(三参数版本)。非常感谢您的帮助,我已经坚持了几天了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 2021-02-03
  • 1970-01-01
  • 2011-03-15
相关资源
最近更新 更多