我正在尝试使用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.54545
和lambda = 2772.72727
应该给出mean = 500
和std = 600
,但是我得到的是Mean = 3272.7276793445976
和{{1 }}。我知道这是由不同版本的pdf引起的,但是我想知道是否可以使用std = 600.0005828803438
函数或任何内置函数,而不是为此发行版编写新函数。
答案 0 :(得分:0)
您描述的发行版通常称为Beta prime distribution,在SciPy中实现为betaprime
。它比Pareto distribution更通用。有人可以称其为广义Pareto分布,但我不会,因为该术语还意味着something else。我们可以标准化维基百科对这些名称的用法吗?
betaprime
的相关参数是a
,b
和scale
,从您的表示法翻译为a=k
,b=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