介绍
在简单逻辑回归中,我们只有一个预测变量,而在多元逻辑回归中,有多个预测变量。响应变量可以是二元的,也可以是有序的。例如,响应变量可以只是在两个类别之间的选择,如城市或乡村、健康或生病、就业或失业、受教育或文盲。响应变量也可以是有序的,其中响应变量中可以有从低到高或从高到低的特定级别。例如,薪水水平可以被分类为低薪水、低于平均薪水、平均薪水、高于平均薪水和高薪水。这是五个有序的分类级别,响应变量可以是其中的任何一个类别。
我们在之前的文章中讨论了这些二元和有序逻辑回归,以下是相关链接:
在R中进行二元变量的简单逻辑回归:https://towardsdatascience.com/simple-logistic-regression-for-dichotomous-variables-in-r-8befbe3e95b4
在R中进行二元变量的多元逻辑回归:https://towardsdatascience.com/multiple-logistic-regression-in-r-aa65c2a91e22
在R中进行有序变量的简单逻辑回归:https://towardsdatascience.com/simple-logistic-regression-for-ordinal-variables-in-r-1d95fa278c5e
在R中进行有序变量的多元逻辑回归和预测概率:https://medium.com/towards-data-science/multiple-logistic-regression-for-ordinal-variable-and-predicted-probabilities-in-r-3e3ef3ba6ca2
在本文中,我将介绍不同模型之间的比较以及如何解释R的输出。
数据集
本案例研究将基于来自UCI机器学习库的数据集,称为成年人数据集(Adult Data Set),该数据集将用作数据源。据估计,该数据集中的超过30000个个体的人口统计信息已被记录下来,包括但不限于种族、教育、职业、性别、薪水、每周工作小时数、就业水平以及收入水平等信息。
为了进行有序逻辑回归分析,需要对给定数据进行一些修改。
在这里,我将有两个数据集:一个用于响应变量是二元的二元模型,另一个用于响应变量是有序的有序模型。原始数据已经进行了一些修改,以进行简单的和有序的逻辑回归,这些数据保存在下面的GitHub链接中。
链接到简单逻辑回归的Excel文件:GSS — glm2.xlsx:https://github.com/mdsohelmahmood/Statistics-in-R-Series/tree/main/Simple%20Logistic%20Regression
链接到多元逻辑回归的Excel文件:adult-v3.xlsx:https://github.com/mdsohelmahmood/Statistics-in-R-Series/tree/main/Multiple%20Logistic%20Regression
第一个文件中,母亲和父亲的学士学位教育是二元的,分别用MADEG和PADEG表示,输出也是二元的,用DEGREE1表示,代表每个个体的学士学位教育。
在第二个文件中,教育水平被转换为以下有序形式。
数据集中的教育水平 性别和种族的其他变量在此处是二元的。
在R中的实现
我使用的用于比较不同模型的GitHub Gist如下。我使用了anova函数来实现此目的。
首先加载必要的库。
library(readxl)
library(rcompanion)
library(ordinal)
library(foreign)
# Binary model (response variable is binary)
data <- read_excel("D:/Youtube R/GSS - glm2.xlsx")
model1 <- glm(DEGREE1 ~ MADEG1, data = data)
model2 <- glm(DEGREE1 ~ MADEG1+PADEG1, data = data)
anova(model1,model2, test = "Chisq")
AIC(model1)
AIC(model2)
# Ordinal model (response variable is ordinal)
data <- read_excel("D:/Youtube R/UCI data/Adult dataset/adult-v3.xlsx")
data
data$Income_greater_than_50k_code <- factor(data$Income_greater_than_50k_code, ordered=TRUE)
data$Education_code <- as.numeric(data$Education_code)
data$Gender_code <- as.numeric(data$Gender_code)
data$Race_code <- as.numeric(data$Race_code)
model3 <- clm(Income_greater_than_50k_code ~ Education_code, data = data)
model4 <- clm(Income_greater_than_50k_code ~ Education_code + Gender_code, data = data)
model5 <- clm(Income_greater_than_50k_code ~ Education_code + Gender_code + Race_code, data = data)
anova(model3,model4,model5)
AIC(model3)
AIC(model4)
AIC(model5)
模型比较和结果解释
在模型1中,研究问题是:
母亲的教育水平是否会影响孩子的教育水平?
在模型2中,我添加了父亲的教育水平,问题变为:
父亲的教育水平是否与孩子的教育水平有关,还是不相关的?
以下是关键观察结果:
- 模型1的剩余偏差为430.88,而模型2的值为395.40,较小。偏差差为35.48,表明模型2比模型1更稳健。与模型1相比,模型2为我们提供了有关每个个体学士学位的更多信息。这个剩余偏差是该特定模型相对于饱和模型的偏差,其中每个观测都带来一个额外的预测变量,使得模型对该数据集变得完美。我们可以看到模型2的偏差较小。
- 在这里,似然比卡方检验是显著的。因此,我们拒绝了原假设,并得出结论:具有两个预测变量的模型更适合数据。
在随后的模型中,我使用教育、性别和种族数据作为预测变量,以及收入水平作为响应变量,开展了有序逻辑回归分析。
模型3包括教育数据作为预测变量。
模型4包括教育和性别数据作为预测变量。
模型5包括教育、性别和种族数据作为预测变量。
由于这是有序回归,输出窗口是不同的。有时候会将空模型与完整模型或嵌套模型进行比较。如果我们将空模型视为模型0,则可以定义如下:
model0 <- clm(Income_greater_than_50k_code ~ 1, data = data)
以下是关键观察结果:
- 可以对所有模型进行AIC统计量的比较。模型5具有较小的AIC值,表示该模型更稳健。AIC值越小,模型拟合得越好。
- 每个模型的对数似然值显示在下一列中。模型4的似然比卡方检验统计量为1492.8,这是这两个模型对数似然值之差的两倍。此外,p <0.001,这意味着具有两个预测变量的模型5比只有一个预测变量的模型3拟合得更好。因此,当我们将性别与教育一起纳入模型时,它对每个个体的收入水平有更好的预测能力。类似地,当比较模型4和模型5时,卡方检验统计量为96.5,p <0.001。因此,包含种族数据的模型5比模型4更具描述收入的能力。
结论
本文通过在R中实现代码展示了二元逻辑回归模型之间的比较,以及有序逻辑回归模型之间的比较。可能会开发多个模型来解决同一个问题,但是比较这些模型可以检查模型的稳健性。我们可以检查包含一个预测变量是否实际上对稳健性有所贡献。还可以获得贡献的程度。这有助于确定部署最终模型的方式。
致谢
[Dua, D. and Graff, C. (2019). UCI Machine Learning Repository http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science (CC BY 4.0)