scipy.stats中的三参数帕累托分布

时间:2018-08-20 06:12:11

标签: python scipy

我正在尝试使用scipy.stats.pareto定义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.7276793445976和{{1 }}。我知道这是由不同版本的pdf引起的,但是我想知道是否可以使用std = 600.0005828803438函数或任何内置函数,而不是为此发行版编写新函数。

1 个答案:

答案 0 :(得分:0)

您描述的发行版通常称为Beta prime distribution,在SciPy中实现为betaprime。它比Pareto distribution更通用。有人可以称其为广义Pareto分布,但我不会,因为该术语还意味着something else。我们可以标准化维基百科对这些名称的用法吗?

betaprime的相关参数是abscale,从您的表示法翻译为a=kb=alpha,和scale=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