R中glm聚合逻辑回归添加连续预测变量结果不匹配问题咨询
问题成因
- 核心原因是逻辑回归属于非线性模型:其连接函数logit为非线性形式,不满足期望运算的可交换性,即 $E[\text{logit}^{-1}(\boldsymbol{X}\beta)] \neq \text{logit}^{-1}(E[\boldsymbol{X}]\beta)$。你在聚合时仅保留连续变量的分组均值,损失了组内连续变量的变异信息,代入非线性模型后自然会产生估计偏差,这种偏差也被称为聚合偏差。
- 仅含分类变量时结果一致的原因:你当时的分组键就是所有分类预测变量的组合,同一分组内所有预测变量的取值完全相同,不存在组内变异,聚合没有损失任何预测变量的信息,因此加权后的聚合回归和个体回归的似然函数完全等价,估计结果自然一致。
解决方案
如果需要聚合回归结果与个体层面回归完全一致,需要满足「同一分组内所有预测变量(包括连续变量)的取值完全相同」的前提,调整分组逻辑即可:
# 分组键包含所有预测变量:分类变量cyl、carb,连续变量mpg mtcars_percent <- mtcars %>% group_by(cyl, carb, mpg) %>% summarise( n = n(), am = sum(am)/n ) # 此时聚合回归结果与个体回归完全一致 summary(glm(am ~ as.factor(cyl) + carb + mpg, data = mtcars_percent, family = binomial(link = "logit"), weights = n ))
如果受限于业务场景无法细化分组粒度,无法保证组内连续变量无变异,那么不可能仅通过「分组均值+权重」的方式还原个体层面的逻辑回归结果,建议直接使用个体层面数据拟合模型。
内容的提问来源于stack exchange,提问作者sometimes_sci
相关产品推荐
相关产品推荐

