为不平衡数据的逻辑回归增加权重


21

我想用不平衡的数据(9:1)对逻辑回归建模。我想尝试glmR函数中的weights选项,但是我不确定100%会做什么。

可以说我的输出变量是c(0,0,0,0,0,0,0,0,0,1)。现在我想给“ 1”增加10倍的重量。所以我给出权重的论点weights=c(1,1,1,1,1,1,1,1,1,1,1,10)

当我这样做时,将在最大似然计算中考虑它。我对吗?错误分类“ 1”比错误分类“ 0”仅差10倍。

Answers:


11

顺便说一句,您不必使数据集在1和0之间保持平衡。您所需要的是足够多的1,以最大程度地收敛。查看数据集中1的分布(100,000),您应该不会有任何问题。您可以在这里做一个简单的实验

  1. 取样1%的10%和0%的10%,并且两者的权重均为10
  2. 采样100%的1和10%的0,并使用权重10表示0

在两种情况下,您将获得相同的估计值。同样,加权的想法与抽样有关。如果使用整个数据集,则不应对其加权。如果我是你,我将只使用10%(如果是1)和10%(0)。

在R中,您可以使用glm。这是一个示例代码:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

在您的数据集中应该有一个wt权重变量。

如果您同时使用0和1的10%,则wt变量的值为10。

如果您使用0的10%和1的100%:wt对于y = 0的观测值,变量的值为10,对于y = 1的观测值,变量的值为1


12

加权是对数据加权以补偿样本和总体差异的程序(King 2001)。例如,在罕见事件中(例如信用风险欺诈,医学文献中的死亡),我们倾向于对所有1(稀有事件)和零(0)(非事件)进行采样。在这种情况下,我们必须相应地加权观测值。

示例:假设,在50万笔交易中,有50笔欺诈交易。在这种情况下,您会

  1. 采样所有50个欺诈交易(欺诈的100%)
  2. 良好交易的10%(500,000的10%为50,000良好交易)

在这种情况下,您将为欺诈交易分配1的权重,为良好交易分配10的权重。这称为加权最大似然法。重要的一点是,权重与抽样比例有关

请参阅:稀有事件数据中的逻辑回归(King 2001)


嗨,Subra!非常感谢您使用国王的方法!!还没听说!就我而言,我有100万笔交易!(900.000是“ 0”,而100.000是“ 1”)。所以我应该采样我的“ 0”的10%吗?那么我几乎有一个平衡的数据集。那么我必须将“ 0”的权重比“ 1”的权重大十倍吧?和MASS包中R glm()中的函数完全正确吗?如果我加权观察结果,我将计算加权最大似然?谢谢!非常感谢您的回答和帮助

我真的很想这个问题。如果我说:现在使用我的所有数据来构建logit模型(使用9:1的不平衡数据)。然后我权衡我的“ 1”十倍,即使实际上我没有更多数据,也不是我数据的10%。就像,我的行为就像我一样.....所以现在当R计算模型时,它认为我只使用我的“ 1”的10%,并在可能性计算中考虑了它。这有任何意义吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.