我正在尝试计算毛刺分布的均值和标准差,但我不确定如何输入此值。我正在使用的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.burr
或scipy.stats.burr12
中吗?
答案 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) / scale
和y = (x - loc) / scale
。
因此,为了使lamda+x**gamma
是1 + (x/scale)**gamma
的常数倍,我们需要scale
是lamda**(1/gamma)
。指数与SciPy表示法对应,分别为c = gamma
和d = 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