使用scipy.stats.gamma和scipy.optimize.minimize来估计规模参数

2024-05-15 10:58:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过使用scipy.stats.gammascipy.optimize.minimize以及我的数据来估计scale参数。 我建立了一个要评估的函数:

def loss_func(para, x, y):
    return sum((gamma.cdf(x, para[0], para[1])-y)**2)/2

以及

^{pr2}$

这样,res.x[1]会返回scale参数,而{}会返回shape参数吗?在


Tags: 数据函数参数returndefstatsscipyoptimize
1条回答
网友
1楼 · 发布于 2024-05-15 10:58:00

不,我不认为你说得对。请参阅scipy.stats的文档,了解累积分布函数方法:.cdf(x, a, loc=0, scale=1),函数如下:

def loss_func(para, x, y):
    return sum((gamma.cdf(x, para[0], para[1])-y)**2)/2

para[0]变为a,因此形状参数和para[1]变成{},这是位置参数。结果,res.x[1]返回位置,res.x[0]返回shape,这不是您想要的。在

所以你应该把你的功能改成:

^{pr2}$

现在,请记住,你实际上是在做最小二乘法最小化,以使经验CDF与Gamma CDF相匹配。什么@贝沙德努里建议使用.fit()方法,是一种最大似然法。这两者不同,预期结果也会不同。如果你有原始数据(而不是经验CDF),你最好使用.fit()或{}方法。在

相关问题 更多 >