分类预测变量在逻辑回归中的意义

机器算法验证 r 物流 分类数据 特征选择 分类编码
2022-01-20 15:32:21

我无法解释逻辑回归中分类变量的 z 值。在下面的示例中,我有一个包含 3 个类的分类变量,根据 z 值,CLASS2 可能相关,而其他类则不相关。

但现在这意味着什么?

我可以将其他类合并为一个吗?
整个变量可能不是一个好的预测指标?

这只是一个例子,这里的实际 z 值并不是真正的问题,我只是对它们的解释有困难。

           Estimate    Std. Error  z value Pr(>|z|)    
CLASS0     6.069e-02  1.564e-01   0.388   0.6979    
CLASS1     1.734e-01  2.630e-01   0.659   0.5098    
CLASS2     1.597e+00  6.354e-01   2.514   0.0119 *  
2个回答

以下解释不限于逻辑回归,而是同样适用于正常线性回归和其他 GLM。通常,R排除一个级别的分类,系数表示每个类与该参考类(或有时称为基线类)的差异(这在 中称为虚拟编码或治疗对比R,请参阅此处以获取不同对比选项的出色概述)。要查看 中的当前对比R,请键入options("contrasts")通常,R按字母顺序对分类变量的级别进行排序,并将第一个作为参考类。这并不总是最佳的,可以通过键入来更改(在这里,我们将在新变量中将引用类设置为“c”)new.variable <- relevel(old.variable, ref="c"). 对于分类变量的每个级别的每个系数,进行Wald检验,以检验参考类与其他类的系数之间的成对差异是否不为零这就是回归表中如果只有一个分类类别是显着的,这并不意味着整个变量是没有意义的,应该从模型中删除。您可以通过执行似然比检验来检查变量的整体效果:拟合两个模型,一个有变量,一个没有变量并输入(参见下面的示例)这是一个例子:zpanova(model1, model2, test="LRT")R

mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")

mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

级别rank1已被省略,每个系数表示的系数与相应级别rank之间的差异。因此和的系数之间的差值的系数就是截距。所以真正的系数此处的 Wald 检验测试参考类(此处)的系数与相应水平之间的差异是否不为零。在这种情况下,我们有证据表明所有类别的系数都与 的系数不同您还可以通过添加来拟合没有截距的模型rank1rankrank1rank20.675rank1rank23.990.675=4.67rank1rank1- 1到模型公式直接查看所有系数:

my.mod2 <- glm(admit ~ gre + gpa + rank - 1, data = mydata, family = "binomial")

summary(my.mod2) # no intercept model

Coefficients:
       Estimate Std. Error z value Pr(>|z|)    
gre    0.002264   0.001094   2.070 0.038465 *  
gpa    0.804038   0.331819   2.423 0.015388 *  
rank1 -3.989979   1.139951  -3.500 0.000465 ***
rank2 -4.665422   1.109370  -4.205 2.61e-05 ***
rank3 -5.330183   1.149538  -4.637 3.54e-06 ***
rank4 -5.541443   1.138072  -4.869 1.12e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

请注意,截距现在消失了,系数rank1恰好是第一个模型的截距。在这里,Wald 检验不是检查系数之间的成对差异,而是检查每个单独的系数为零的假设。同样,我们有证据表明每个系数rank都不为零。最后,为了检查整个变量是否rank提高了模型拟合度,我们拟合了一个带有 ( my.mod1) 的模型和一个没有变量rank( my.mod2) 的模型,并进行了似然比检验。rank这检验了 的所有系数都为零的假设:

my.mod1 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") # with rank
my.mod2 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial") # without rank

anova(my.mod1, my.mod2, test="LRT")

Analysis of Deviance Table

Model 1: admit ~ gre + gpa + rank
Model 2: admit ~ gre + gpa
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       394     458.52                          
2       397     480.34 -3  -21.826 7.088e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

似然比检验非常显着,我们会得出结论,变量rank应该保留在模型中。

这个帖子也很有趣。

值只是统计检验的检验统计量,因此如果您无法解释它,第一步就是找出零假设是什么。CLASS0 检验的原假设是其系数为 0。CLASS0 的系数是 CLASS0 与参考类 (CLASS3?) 之间的对数(几率)差异为零,或者等效地,几率的比率为CLASS0 和参考类为 1。换句话说,CLASS0 和参考类之间的成功几率没有差异。z

那么不显着的系数是否意味着您可以合并类别?不。首先,不显着意味着我们不能拒绝没有差异的假设,但这并不意味着不存在这种差异。没有证据与没有证据不是一回事。其次,合并类别,尤其是参考类别,会改变所有其他系数的解释。这是否有意义取决于这些不同的类代表什么。

这是否意味着整个分类变量是“坏”(非显着)预测变量?不,因为您需要同时测试所有 CLASS 术语。