scipy.stats中的毛刺分布



我正在尝试计算毛刺分布的平均值和标准,但我不太确定如何输入。我正在使用的pdf是:来自IFoA公式的f(x) = (alpha*gamma*lambda**alpha*x**(gamma-1))/(lambda+x**gamma)**(alpha+1)

我计算的参数为:alpha = 2.3361635751273977,lambda = 10.596809948869414 和 gamma = 0.5,以获得平均值 = 500 和 std = 600。

有人可以建议我应该如何将数据输入scipy.stats.burrscipy.stats.burr12吗?

你需要在这里burr12,而不是burr。(区别在于位于另一个幂中的x的幂的符号。令人困惑的是,在SciPy之外通常简称为Burr的是burr12,而不是SciPy称之为burr的东西。

Burr XII PDF是用SciPy写成c*d*x**(c-1)*(1+x**c)**(-d-1)其中c,d是正形状参数。您的配方

(alpha*gamma*lamda**alpha*x**(gamma-1)) / (lamda+x**gamma)**(alpha+1)

用 lambda 代替 1,因此涉及一些缩放。科学文档 说

burr12.pdf(x, c, d, loc, scale)等同于burr12.pdf(y, c, d) / scaley = (x - loc) / scale

所以,为了使lamda+x**gamma1 + (x/scale)**gamma的常数倍数,我们需要scalelamda**(1/gamma)。指数对应于 SciPy 表示法,即c = gammad = alpha。让我们测试一下:

from scipy.stats import burr12
alpha = 2.3361635751273977
lamda = 10.596809948869414
gamma = 0.5
scale = lamda**(1/gamma)
c = gamma
d = alpha
print(burr12.mean(c, d, loc=0, scale=scale))
print(burr12.std(c, d, loc=0, scale=scale))

哪些打印

500.0
600.0

最新更新