scipy.stats中的毛刺分布

时间:2018-08-18 18:43:50

标签: python scipy

我正在尝试计算毛刺分布的均值和标准差,但我不确定如何输入此值。我正在使用的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中吗?

1 个答案:

答案 0 :(得分:2)

您这里需要burr12,而不是burr。 (区别在于x的幂位于另一幂内的符号。令人困惑的是,burr12通常在SciPy之外简称为Burr,而不是SciPy称为burr的事物。)< / p>

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,因此涉及一些缩放。 SciPy文档说

  

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