在 beta 回归中处理 0,1 值

机器算法验证 回归 广义线性模型 贝塔分布 零通胀 贝塔回归
2022-02-01 19:00:43

我在 [0,1] 中有一些数据,我想用 beta 回归进行分析。当然,需要做一些事情来适应 0,1 值。我不喜欢修改数据以适应模型。我也不认为零通胀和 1 通胀是一个好主意,因为我相信在这种情况下,人们应该认为 0 是非常小的正值(但我不想确切地说什么值是合适的。一个合理的选择我相信会选择像 .001 和 .999 这样的小值,并使用 beta 的累积距离来拟合模型。所以对于观察 y_i,对数似然 LL_i 将是

 if  y_i < .001   LL+=log(cumd_beta(.001))
 else if y_i>.999  LL+=log(1.0-cum_beta(.999))
 else LL+=log(beta_density(y_i))

我喜欢这个模型的地方在于,如果 beta 回归模型是有效的,这个模型也是有效的,但它消除了对极值的一些敏感性。然而,这似乎是一种很自然的方法,我想知道为什么我在文献中找不到任何明显的参考资料。所以我的问题不是修改数据,为什么不修改模型。修改数据会使结果产生偏差(基于原始模型有效的假设),而通过合并极值来修改模型不会使结果产生偏差。

也许我忽略了一个问题?

4个回答

根据Smithson & Verkuilen (2006),适当的变换是1

x=x(N1)+sN

“其中 N 是样本大小,s 是介于 0 和 1 之间的常数。从贝叶斯的角度来看,s 的行为就像我们正在考虑先验一样。s 的合理选择是 0.5。”

这会将位于中的数据压缩到中。上述引用以及转换的数学原因可在 [论文的补充说明] 中找到。[0,1](0,1)


参考:
  1. Smithson, M. & Verkuilen, J.更好的柠檬榨汁机?具有 beta 分布因变量的最大似然回归。 心理学。方法11, 54–71 (2006)。DOI:10.1037/1082-989X.11.1.54

我认为这个问题的实际“正确”答案是零一膨胀贝塔回归。这旨在处理在区间 [0,1] 上连续变化的数据,并允许数据中包含许多真实的 0 和 1。这种方法适合贝叶斯上下文中的三个独立模型,类似于@B_Miner 提出的。

模型 1:值是离散的 0/1,还是 (0,1) 中的值?符合伯努利分布。

模型 2:用伯努利分布拟合离散子集。

模型 3:使用 beta 回归拟合 (0,1) 子集。

对于预测,第一个模型结果可用于对模型 2 和 3 的预测进行加权。这可以在zoibR 包中实现,也可以在 BUGS/JAGS/STAN/etc 中自制。

戴夫,

解决这个问题的常用方法是拟合 2 个逻辑回归模型来预测一个案例是 0 还是 1。然后,对 (0,1) 范围内的那些使用 beta 回归。

贝塔分布来自充分的统计量(log(x),log(1x)). 这些统计数据对您的数据有意义吗?如果你有这么多的 0 和 1,那么它们的存在似乎值得怀疑,你可能会考虑根本不使用 beta 分布。

如果您要选择充分的统计量x相反(超过你的有界支持),那么我相信你最终会得到一个截断的指数分布,并且(x,x2)截断的正态分布。

我相信两者都很容易以贝叶斯方式估计,因为它们都是指数族。这是您希望的模型的修改。