R语言glm回归未生成亚裔虚拟变量系数的原因咨询
为什么亚裔类别没有生成回归系数?
这是R中分类变量(因子)在回归模型里的默认行为导致的——你的race_eth中的亚裔(asian, non-hisp)被自动选为了参考组,这类别的系数不会直接出现在summary结果里,其他类别的系数都是相对于这个参考组的对数优势比。
具体来说:
- R对因子类型的分类变量默认采用「处理编码(treatment coding)」:它会选取因子水平中的某一个作为基准(参考组),模型只输出其他水平相对于这个基准组的差异系数。
- 你可以通过输入
levels(acs_hh$race_eth)查看race_eth的因子水平顺序,排在第一位的就是默认的参考组。如果亚裔是第一个水平,那它就不会有单独的系数输出。
举个简单的例子:假设你的race_eth水平顺序是c("asian, non-hisp", "white, non-hisp", "black, non-hisp"),那么回归结果里只会显示白人和黑人的系数——这两个系数分别代表白人和黑人相对于亚裔家庭,在own这个因变量上的对数优势比差异。
如果你想让亚裔的系数显示出来,只需要调整参考组即可,用relevel()函数修改因子的基准水平:
# 把"white, non-hisp"设为参考组,这样亚裔的系数就会出现在结果里 acs_hh$race_eth <- relevel(acs_hh$race_eth, ref = "white, non-hisp") # 重新拟合模型(建议用data参数简化代码) reg <- glm(own ~ hhincome + race_eth, data = acs_hh, family = "binomial") summary(reg)
内容的提问来源于stack exchange,提问作者Henry Walsh
相关产品推荐
相关产品推荐

