【问题标题】:fitting beta distribution (in python) - clarification please拟合 beta 分布(在 python 中) - 请澄清
【发布时间】:2016-03-07 11:00:38
【问题描述】:

我正在使用 beta.fit(W) 拟合 beta 分布。 W 的值未达到 [0,1] 边界。我的问题如下 - 我是否需要通过 beta.fit(W,loc = min(W),scale = max(W) - min(W)) 强制 [0,1] 边界,或者我可以假设为只要数据在 [0,1] 范围内,拟合“会很好”吗?显然,缩放数据应该给出不同的 a 和 b 值。哪一个是“正确的”?

这个问题与: https://stats.stackexchange.com/questions/68983/beta-distribution-fitting-in-scipy

不幸的是,当数据在预期范围内时,没有给出有效的答案......

我尝试拟合使用已知 a 和 b 值生成的数据,但两种技术都无法很好地拟合,尽管缩放似乎有点帮助。

谢谢

【问题讨论】:

  • 如果您想修复 loc 或 scale,请使用 .fit(..., floc=..., fscale=...)

标签: python scipy distribution static-analysis data-fitting


【解决方案1】:

当不传递flocfscale 参数时,fit 会尝试估计它们。如果您知道数据在特定区间内,则应使拟合函数知道附加信息(通过自己设置参数)以改善拟合。您还可以对 α、β 和比例参数给出初始猜测(通过 locscale 关键字参数);不过,SciPy 的默认猜测功能似乎相当复杂。

从样本集 is not a good idea 的限制中推导出 flocfscale,因为对于大多数 α 和 β 值,β 分布在区间边界处为零,这意味着您在数据之间创建了很大的差异和所有可能的配合。

【讨论】:

  • 我的印象是 scale 和 loc 将用于缩放不在 [0,1] 区间内的变量,并且在 scale 内始终为 1 且 loc = 0,即输入数据没有任何改变。你所说的是数据以某种方式缩放。因此,如果给定的样本都来自某个 α,β,但不跨越整个 [0,1],则估计本质上是不正确的。我是对的吗?否则,我无法理解 fit 函数支持的大于 1 的比例值,因为 beta 仅在 [0,1] 上定义...谢谢
  • beta 分布通过应用转换 y = (x - loc)/scale 将其参数全局转换为 [0,1]。这不仅限于 [0,1] 区间之外的数据。
  • 所以它并不总是能准确地工作......当我提供范围内的元素时,比如说,[0.05,0.5] 我希望拟合在给定样本之外没有它的平均值,说0.6。显然,算法没有考虑到这一点,无论是否缩放......再次感谢
猜你喜欢
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 2019-09-17
  • 2014-09-02
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多