分类预测因子在逻辑回归中的意义


19

我在解释逻辑回归时无法解释类别变量的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 *  

Answers:


47

以下解释不仅限于逻辑回归,而且在法线回归和其他GLM中同样适用。通常,R不包括一个类别的分类,系数表示每个类别与该参考类别(或有时称为基准类别)之间的差异(这称为伪编码或中的处理对比度R,有关不同对比度选项的详细概述,请参见此处)。要查看当前的对比度R,请键入options("contrasts")。通常,R按字母顺序对分类变量的级别进行排序,并将第一个作为参考类。这并不总是最佳的,可以通过键入来更改(这里,我们将在新变量中将引用类设置为“ c”)new.variable <- relevel(old.variable, ref="c")。对于分类变量的每个级别的每个系数,执行Wald检验测试参考类别和其他类别的系数之间的成对差异是否为零。这就是回归表中的和值。如果只有一个类别类是显著,但这并不意味着整个变量是没有意义的,应该从模型中删除。可以通过执行一个检查变量的整体效果似然比检验:配合两种模式,一种具有和一个没有变量和类型中(见下例)。这是一个例子:žpanova(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

rank1rankrank1rankrank1rank2-0.675rank1rank2-3.99-0.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)的模型和一个没有变量rankmy.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应保留在模型中。

这篇文章也很有趣。


很有信息的答案!一个简单的问题:如果仅将排名作为预测变量怎么办?对于执行LRT测试,空值应admit ~ 1为vs admit ~ rank - 1
NULL

1
@NULL是的,无论是null vs. admit~rank还是admit~rank - 1,对于拟合,它们都是等效的。
COOLSerdash '18

太谢谢了!另外一个快速的问题:当我感兴趣的进行分类变量的系数的单尾Wald检验(不比较基准-我的意思是没有拦截),将其他预测等的影响gre,并gpa通过这种缺乏影响包含拦截?

换句话说,如果我想在控制其他协变量的同时对分类预测变量的系数进行单尾检验,这是可行的方法吗?这也适用于线性回归吗?
空'18

1
rankrankp

8

ž

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

这是否意味着整个分类变量都是“不良”(非重要)预测变量?不可以,因此您需要同时对所有CLASS术语进行测试。

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.