百分比数据的经验逻辑转换

机器算法验证 回归 数据转换 部分 罗吉特
2022-03-16 07:28:47

我已经对我的结果变量(以百分比显示)使用了 logit 变换。但是,这显然给了我 -INF 值,并且由于我的数据在某些情况下包含很多零,因此难以分析。

我现在尝试了经验 logit 变换,将最小的非零提升添加到我的变量的分子和分母以删除 -INF 值(如http://www.esajournals.org/doi/abs/10.1890/中所建议的) 10-0340.1 )。

但是,现在我的数据又非常不正常了。我曾尝试尝试将错误术语添加到 logit 变换中,但没有运气。

有什么方法可以找到一个值来添加到我的转换中以确保正常性?

2个回答

我很幸运将 epsilon 设置为最小非零值的一半,并用 epsilon 替换所有 0 值,用 1-epsilon 替换所有 1 值。然后应用 logit 变换。

此方法保留 logit 变换的原始形式,但允许将 1 和 0 变换为与预期变换的整体形状相匹配的值(注意图中 raw=0 和 1 处的黑点)。特别是,它保留了 0.5 转换为 0 的质量,其余值是对称的。

另一方面,如论文中所述,添加最小的非零值会改变曲线的形状并破坏对称性。

比较调整 logit 变换以处理零的两种方法

一种可以解决您遇到的问题的方法是对未转换的原始值使用稳健的回归方法。例如,在 R 中,您可以执行以下操作:

example = data.frame(outcome = c(0,0,0.3,0.7,1), 
                     predictor = c('left','left','left','right','right'))
m = glm(outcome ~ predictor,example,family=quasibinomial())
summary(m)