R语言----逻辑回归实例(R包mtcars数据集举例)

简单逻辑回归模型可以先参考这篇文章学习下
https://blog.csdn.net/weixin_41744624/article/details/105506951

数据预览

我们使用的是R自带包mtcars中的数据来举例,其中响应变量(y)是数据集中的"am"

异常值检验

首先来检查一下数据集的异常值(缺失、离群、重复),需要根据数据的具体情况确认是否去除,本例中不考虑重复值

离群值
可以选择箱线图,mvoutlier包中的sing2等函数
在此我们选择箱线图演示,绘制数据集中预测变量(x)与am的关系,查看有无离群值:

boxplot(mtcars$mpg~am,mtcars)

在这里插入图片描述
缺失值

rowSums(is.na(raw_data))

在这里插入图片描述

缺失值处理可以采取如下分割数据集策略,本例中没有缺失值:

>d_n <- raw_data[which(rowSums(is.na(raw_data)) > 0),]
>d_nn <- raw_data[-which(rowSums(is.na(raw_data)) > 0),]

提取数据,分割训练集,测试集

d <- raw_data
# 保证实验可重复性
set.seed(110)
train <- createDataPartition(y=d$am,p=0.8,list=FALSE)

d_train <- d[train,]
d_test <- d[-train,]

回归模型建立

创建逻辑回归模型,首先考虑所有的相应变量与预测变量(am)的模型初步建立是否成功:

glm <- glm(am~.,family = binomial(link ='logit'),data = d_train)

在这里插入图片描述
发现警告:拟合概率算出来是数值零或一
拟合出来的值全都是0或者1,说明出现了过拟合的状态,过拟合的原因是噪音或者数据集太少,我们在前面判断的时候已经排除了离群值,所以可能原因应该是数据集太少造成的。

出现错误的解释可以参照这篇文章:
https://www.cnblogs.com/runner-ljt/p/4574275.html

回想一下,R包数据集中的变量有十几个,但是数据集却很少,难免会造成过拟合状态,所以我们选择使用逐步回归分析删除部分不重要的变量,逐步回归分析是以AIC信息统计量为准则(可以搜索赤池准则),通过选择最小的AIC信息统计量,来达到删除或增加变量的目的。

关于逐步回归分析可以参考我的这篇文章:
https://blog.csdn.net/weixin_41744624/article/details/105725381

逐步回归分析

logit.step <- step(glm, direction = "both")

在这里插入图片描述

drop1(logit.step)

在这里插入图片描述
我们观察到其中"gear的AIC也较为高,我们选择去除"

新模型建立及预测结果

# 使用去除变量后的数据进行模型训练
glm <- glm(am ~ qsec+carb,family = binomial(link ='logit'),data = d_train)
#预测模型
pre_test=predict(glm,newdata=d_test,type="response")
#返回预测模型和原数据的混淆矩阵,查看预测结果
confusionMatrix(as.factor(num_test),as.factor(d_test$am))

可以看出模型的准确率在83%左右
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章