我一直在寻找一种方法来将数据拟合到beta二项分布并估算alpha和beta,类似于VGAM库中vglm包的方式。我无法在python中找到如何做到这一点。有一个scipy.stats.beta.fit(),但没有用于beta二项分布。有没有办法做到这一点?
答案 0 :(得分:4)
我还没有看到Python中对beta-binomial的估计。
如果您只想估计参数,那么您可以使用scipy.optimize来最小化您自己编写的对数似然函数或在互联网搜索后复制代码。
您可以继承rv_discrete
以使用scipy.stats.distributions的框架,但scipy中的离散分布没有fit
方法。
如果你想使用statsmodels,那么你可以使用scipy.optimize子类GenericLikelihoodModel
http://statsmodels.sourceforge.net/devel/dev/generated/statsmodels.base.model.GenericLikelihoodModel.html,但定义了我们最大似然估计所需的大部分内容。
但是,您需要编写对数似然函数的代码。这将提供通常的最大似然结果,例如参数和各种测试的标准误差。
如果您需要beta-binomial回归,则R包gamlss中使用的均值方差参数化会更常见,并且可以重用link
函数来约束参数在有效域中。< / p>
作为一个相关示例:这是GenericLikelihoodModel原型的要点,它导致对statsmodel的Beta-Regression的拉取请求:http://gist.github.com/brentp/089c7d6d69d78d26437f
答案 1 :(得分:0)
这个python模块提供了https://github.com/lfiaschi/fastbetabino