我正在尝试计算毛刺分布的平均值和标准,但我不太确定如何输入。我正在使用的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
吗?
你需要在这里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) / 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