如何利用R语言实现logistic逐步回归


导 语

在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价、身高、GDP、学生成绩等,发现这些被预测的变量都属于连续型变量。然而有些情况下,被预测变量可能是二元变量,即成功或失败、流失或不流失、涨或跌等,对于这类问题,线性回归将束手无策。这个时候就需要另一种回归方法进行预测,即Logistic回归。欢迎关注我的个人微信公众号:全哥的学习生涯,获取更多R语言与数据分析学习知识。

在实际应用中,Logistic模型主要有三大用途:

1)寻找危险因素,找到某些影响因变量的"坏因素",一般可以通过优势比发现危险因素;

2)用于预测,可以预测某种情况发生的概率或可能性大小;

3)用于判别,判断某个新样本所属的类别。

Logistic模型实际上是一种回归模型,但这种模型又与普通的线性回归模型又有一定的区别:

1)Logistic回归模型的因变量为二分类变量;

2)该模型的因变量和自变量之间不存在线性关系;

3)一般线性回归模型中需要假设独立同分布、方差齐性等,而Logistic回归模型不需要;

4)Logistic回归没有关于自变量分布的假设条件,可以是连续变量、离散变量和虚拟变量;

5)由于因变量和自变量之间不存在线性关系,所以参数(偏回归系数)使用最大似然估计法计算。


而逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的变量之前回归方程中只包含显著性变量。这是一个反复的过程,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止。以保证最后所得到的解释变量集是最优的。

依据上述思想,可利用逐步回归筛选并剔除引起多重共线性的变量,其具体步骤如下:先用被解释变量对每一个所考虑的解释变量做简单回归,然后以对被解释变量贡献最大的解释变量所对应的回归方程为基础,再逐步引入其余解释变量。经过逐步回归,使得最后保留在模型中的解释变量既是重要的,又没有严重多重共线性。


在这里,我应用了以前实验时的一个数据集向大家展示,该实验的目的是探究哪些因素会对疾病的发生产生影响,在本数据集中,Diseases即为要研究的变量,即此疾病是否会发生,分类为0-未患病,1-患病;Diabetes为病人是否罹患糖尿病,分类为0-未患病,1-患病; Acharacter为是否为A型性格,分类为0-否,1-是;Smoke为是否吸烟,分类为0-否,1-是;Nation为是否汉族,分类为0-否,1-是;Sex为性别,分类为0-男,1-女,以上各变量均为二分类变量,同时因为研究的指标Diseases也为二分类变量,故这里不能使用线性回归,而应使用logistic回归。其余变量,Age年龄,Height升高,Weight体重,Pressure血压以及BMI指数均为连续型变量,需要注意的是,本数据集已对原始数据进行了清洗,现在呈现的是标准化后的数据。需要原始数据集自己进行练手分析的读者请在公众号(全哥的学习生涯)内回复“逻辑回归”获得。


1. 载入数据

data<-read.csv(“C:/Users/Desktop/data.csv”)

head(data,10)

本数据的前10行如图1所示。


图1

2. 转换变量类型

由于性别,是否吸烟,是否患有糖尿病等二分类变量的“1”和“0”并非代表一个数值,而其真正意义是代表一个水平(level),且它们只是一个名义型变量而非连续型的数值变量,因此在R语言中,我们需要将其转换为因子(factor)类型。因子转换的代码如图2所示。


图2

3. logistic回归分析

在R中,构建Logistic回归模型只需要一步,即glm()命令,需要分析的因变量指标Diseases放在最前面,后面依次为要分析的自变量,代码如图3所示。结果如图4所示。欢迎关注我的个人微信公众号:全哥的学习生涯,获取更多R语言与统计分析学习知识。


图3


图4

4. 逐步回归分析

在这里以AIC信息统计量为准则,通过选择最小的AIC信息统计量来实现增加变量的目的,并得到最优化的模型。

代码为:

logit.step <- step(md,direction=”both”)

summary(logit.step)

在此处应注意:若改为direction=”forward”即为前进法,反之backward为后退法,但是前进法和后退法都有明显的不足。前进法可能存在这样的问题:它不能反映引进新的自变量值之后的变化情况。因为某个自变量开始被引入后得到回归方程对应的AIC最小,但是当再引入其他变量后,可能将其从回归方程中提出会是的AIC值变小,但是使用前进法就没有机会将其提出,即一旦引入就会是终身制的。这种只考虑引入而没有考虑剔除的做法显然是不全面的。类似的,后退法中一旦某个自变量被剔除,它就再也没有机会重新进入回归方程。根据前进法和后退法的思想及方法,人们比较自然地想到将两种方法结合起来,这就产生了逐步回归,也就是direction=”both”。

结果如图5所示。逐步回归筛选的最优子集即为我用黄色方框标注的各个指标,我们可以看出,并未去掉任一变量,而是包含了所有。但在显著水平为0.05时,我用红色方框,即Age,Height,Weight,Pressure以及BMI的回归系数Pr均不显著。所以由AIC选出的模型整体最优,但可能包含不显著的变量,需要删去不显著的变量(即红色方框的值),得到新的回归结果。


图5

5. 最终结果

最优模型的代码如图6所示,最终结果如图7所示,可以看出纳入的各变量回归系数均显著。

最后,如果屏幕前的你如果对R语言学习还有什么问题或看法,以及想获取更多的R语言学习与数据分析知识,欢迎关注公众号:全哥的学习生涯。

图6
图7

你可能感兴趣的:(如何利用R语言实现logistic逐步回归)