从 exp(系数)到优势比及其在带因子的 Logistic 回归中的解释

机器算法验证 r 回归 物流
2022-02-10 23:01:43

我根据 SAT 分数和家庭/种族背景对大学录取率进行了线性回归。数据是虚构的。这是对先前问题的跟进,已经回答。为简单起见,问题的重点是在将 SAT 分数放在一边时,优势比的收集和解释。

变量是Accepted(0 或 1)和Background(“红色”或“蓝色”)。我设置了数据,以便“红色”背景的人更有可能进入:

fit <- glm(Accepted~Background, data=dat, family="binomial")
exp(cbind(Odds_Ratio_RedvBlue=coef(fit), confint(fit)))

                        Odds_Ratio_RedvBlue             2.5 %       97.5 %
(Intercept)             0.7088608                     0.5553459   0.9017961
Backgroundred           2.4480042                     1.7397640   3.4595454

问题:

  1. “蓝色”背景的人的奇数比为 0.7 是否被接受?我问这个是因为Backgroundblue如果我运行以下代码,我也会为“”获得 0.7:

    fit <- glm(Accepted~Background-1, data=dat, family="binomial")
    exp(cbind(OR=coef(fit), confint(fit)))
    
  2. 不应该接受“红色”的优势比()只是倒数:()?Accepted/Red:Accepted/BlueOddsBlue=1/OddsRed

1个回答

我一直在通过手动计算优势和优势比来回答我的问题:

Acceptance   blue            red            Grand Total
0            158             102                260
1            112             177                289
Total        270             279                549

所以进入红蓝学校的几率是:

Odds Accept If RedOdds Acccept If Blue=177/102112/158=1.73530.7089=2.448

这是Backgroundred返回:

fit <- glm(Accepted~Background, data=dat, family="binomial")
exp(cbind(Odds_and_OR=coef(fit), confint(fit)))

                      Odds_and_OR                         2.5 %      97.5 %
(Intercept)             0.7088608                     0.5553459   0.9017961
Backgroundred           2.4480042                     1.7397640   3.4595454

同时,(Intercept)对应于优势比的分子,也就是成为“蓝色”家庭背景的几率112/158=0.7089

相反,我运行:

fit2 <- glm(Accepted~Background-1, data=dat, family="binomial")
exp(cbind(Odds=coef(fit2), confint(fit2)))

                        Odds            2.5 %      97.5 %
Backgroundblue     0.7088608        0.5553459   0.9017961
Backgroundred      1.7352941        1.3632702   2.2206569

回报正是成为“蓝色”的几率:Backgroundblue 0.7089)和被接受为“红色”的几率: Backgroundred 1.7353)。那里没有赔率因此,预计这两个返回值不会是互惠的。

最后,如果分类回归变量中有 3 个因子,如何读取结果?

相同的手动与 [R] 计算:

我在相同的前提下创建了一个不同的虚构数据集,但这次有三个种族背景:“红色”、“蓝色”和“橙色”,并运行相同的序列:

一、列联表:

Acceptance  blue    orange  red   Total
0             86        65  130     281
1             64        42  162     268
Total        150       107  292     549

并计算了每个种族的进入几率:

  • 如果红色 = 1.246154,则接受赔率;
  • 如果蓝色 = 0.744186,则接受赔率;
  • 如果橙色 = 0.646154,赔率接受

以及不同的赔率

  • 或红色 v 蓝色 = 1.674519;
  • 或红色 v 橙色 = 1.928571;
  • 或蓝色 v 红色 = 0.597186;
  • 或蓝色 v 橙色 = 1.151717;
  • 或橙色 v 红色 = 0.518519;
  • 或橙色 v 蓝色 = 0.868269

并继续进行现在常规的逻辑回归,然后对系数进行取幂:

fit <- glm(Accepted~Background, data=dat, family="binomial")
exp(cbind(ODDS=coef(fit), confint(fit)))

                      ODDS     2.5 %   97.5 %
(Intercept)      0.7441860 0.5367042 1.026588
Backgroundorange 0.8682692 0.5223358 1.437108
Backgroundred    1.6745192 1.1271430 2.497853

产生进入“蓝色”几率为 ,橙色与蓝色(Intercept)赔率比Backgroundorange为,红色与蓝色的 OR 为Backgroundred

另一方面,没有截距的回归可以预见地只返回三个独立的几率

fit2 <- glm(Accepted~Background-1, data=dat, family="binomial")
exp(cbind(ODDS=coef(fit2), confint(fit2)))

                      ODDS     2.5 %    97.5 %
Backgroundblue   0.7441860 0.5367042 1.0265875
Backgroundorange 0.6461538 0.4354366 0.9484999
Backgroundred    1.2461538 0.9900426 1.5715814