【问题标题】:Fit beta binomial拟合 beta 二项式
【发布时间】:2015-04-07 04:29:38
【问题描述】:

我一直在寻找一种将数据拟合到 beta 二项分布并估计 alpha 和 beta 的方法,类似于 VGAM 库中的 vglm 包的方式。我一直无法找到如何在 python 中执行此操作。有一个 scipy.stats.beta.fit() ,但没有一个 beta 二项分布。有没有办法做到这一点?

【问题讨论】:

    标签: python statistics scipy beta binomial-cdf


    【解决方案1】:

    我还没有看到 Python 中的 beta-binomial 估计。

    如果您只是想估计参数,那么您可以使用 scipy.optimize 最小化对数似然函数,您可以自己编写或在互联网搜索后复制代码。

    您可以继承 rv_discrete 以使用 scipy.stats.distributions 的框架,但 scipy 中的离散分布没有 fit 方法。

    如果您想使用 statsmodels,那么您可以继承 GenericLikelihoodModel http://statsmodels.sourceforge.net/devel/dev/generated/statsmodels.base.model.GenericLikelihoodModel.html,它使用 scipy.optimize 但定义了我们进行最大似然估计所需的大部分内容。 但是,您需要为对数似然函数编写代码。这将提供通常的最大似然结果,例如参数的标准误差和各种测试。

    如果您需要 beta-binomial 回归,那么 R 包 gamlss 中使用的均值方差参数化会更常见,并且可以重用 link 函数将参数约束在有效域中。

    作为一个相关示例:这是 GenericLikelihoodModel 原型的要点,该原型导致对 statsmodels 的 Beta-Regression 的拉取请求:http://gist.github.com/brentp/089c7d6d69d78d26437f

    【讨论】:

    • scipy 有 scipy.stats.beta.fit()。这个的 alpha 和 beta 参数与为 beta 二项式构建的参数有什么区别?
    • 我从未尝试过,所以我基于比较 wikipedia 对 beta 和 beta-binomial 的描述。我认为,如果n 是常数,那么 alpha 和 beta 估计应该是相同的。如果n 波动,那么估计 beta-binomial 的观察权重将与估计 beta 不同,其中权重将取决于 n 的大小。基于较大 n 的比例将具有较小的方差,并且比基于较小 n 的比例具有更大的权重。
    • beta 分布(在 scipy.stats.beta 中实现)支持 [0,1] 范围,而 beta-二项分布支持整数。对于两种完全不同类型的数据,它们是两种完全不同的分布;您无法使用 beta 分布拟合 beta 二项式数据。 (将 beta-二项式分布想象成一个二项式分布,您无法准确知道成功概率。)
    • 我提到了 beta 回归作为实现最大似然模型的一个例子。但是,如果我们将(β-)二项式计数数据除以暴露(试验次数),那么我们会得到一个可以拟合 beta 分布的比例,假设它很好地近似于该比例的基本分布。跨度>
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2015-04-09
      • 2014-07-12
      • 2015-01-12
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 2020-01-30
      相关资源
      最近更新 更多