在R语言中实现Logistic逻辑回归

news/2024/12/22 16:40:56/

逻辑回归是拟合回归曲线的方法,当y是分类变量时,y = f(x)。典型的使用这种模型是给定一组预测的X预测Ÿ。预测因子可以是连续的,分类的或两者的混合。最近我们被客户要求撰写关于Logistic逻辑回归的研究报告。

相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

逻辑回归Logistic模型原理和R语言分类预测冠心病风险实例

,时长06:48

R中的逻辑回归实现

R可以很容易地拟合逻辑回归模型。要调用的函数是glm(),拟合过程与线性回归中使用的过程没有太大差别。在这篇文章中,我将拟合一个二元逻辑回归模型并解释每一步。

数据集

我们将研究泰坦尼克号数据集

目标是预测生存(如果乘客幸存,则为1,否则为0)基于某些诸如等级,性别,年龄等特征。我们将使用分类变量和连续变量。

数据清理过程

在处理真实数据集时,我们需要考虑到一些数据可能缺失的情况,因此我们需要为我们的分析准备数据集。作为第一步,我们使用该函数加载csv数据read.csv()。

使每个缺失值编码为NA。

training.data.raw < - read.csv('train.csv',header = T,na.strings = c(“”))

现在我们需要检查缺失的值,查看每个变量的唯一值,使用sapply()函数将函数作为参数传递给数据框的每一列。

PassengerId    Survived      Pclass        Name         Sex 0           0           0           0           0 Age       SibSp       Parch      Ticket        Fare 177           0           0           0           0 Cabin    Embarked 687           2 length(unique(x)))PassengerId    Survived      Pclass        Name         Sex 891           2           3         891           2 Age       SibSp       Parch      Ticket        Fare 89           7           7         681         248 Cabin    Embarked 148           4

对缺失值进行可视化处理:可以绘制数据集并显示缺失值:

船舱有太多的缺失值,我们不使用它。

使用subset()函数我们对原始数据集进行子集化,只选择相关列。

data < - subset(training.data.raw,select = c(2,3,5,6,7,8,10,12))

现在我们需要解释其他缺失的值。通过在拟合函数内设置参数来拟合广义线性模型时,R可以处理它们。有不同的方法可以做到这一点,一种典型的方法是用现有的平均值,中位数或模式代替缺失值。我使用平均值。

data$ Age [is.na(data $ Age)] < - mean(data$ Age,na.rm = T)

就分类变量而言,使用read.table()或read.csv()默认会将分类变量编码为因子。

为了更好地理解R如何处理分类变量,我们可以使用contrasts()函数。

在进行拟合过程之前,先清理和格式化数据。这个预处理步骤对于获得模型的良好拟合和更好的预测能力通常是至关重要的。

模型拟合

我们将数据分成两部分:训练和测试集。训练集将用于拟合我们的模型。

通过使用函数,summary()我们获得了我们模型的结果:


Deviance Residuals: Min       1Q   Median       3Q      Max  
-2.6064  -0.5954  -0.4254   0.6220   2.4165  
Coefficients:Estimate Std. Error z value Pr(>|z|)    
(Intercept)  5.137627   0.594998   8.635  < 2e-16 ***
Pclass      -1.087156   0.151168  -7.192 6.40e-13 ***
Sexmale     -2.756819   0.212026 -13.002  < 2e-16 ***
Age         -0.037267   0.008195  -4.547 5.43e-06 ***
SibSp       -0.292920   0.114642  -2.555   0.0106 *  
Parch       -0.116576   0.128127  -0.910   0.3629    
Fare         0.001528   0.002353   0.649   0.5160    
EmbarkedQ   -0.002656   0.400882  -0.007   0.9947    
EmbarkedS   -0.318786   0.252960  -1.260   0.2076    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

解释我们的逻辑回归模型的结果

现在我们可以分析拟合并解释模型

首先,我们可以看到SibSp,Fare和Embarked没有统计意义。至于统计上显着的变量,性别具有最低的p值,这表明乘客的性别与存活的可能性有很强的关联。预测因子的负系数表明所有其他变量相同,男性乘客不太可能存活下来。由于男性是虚拟变量,因此男性将对数概率降低2.75,而单位年龄增加则将对数概率降低0.037。

现在我们可以运行anova()模型上的函数来分析偏差表

Analysis of Deviance Table
Model: binomial, link: logit
Response: Survived
Terms added sequentially (first to last)Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
NULL                       799    1065.39              
Pclass    1   83.607       798     981.79 < 2.2e-16 ***
Sex       1  240.014       797     741.77 < 2.2e-16 ***
Age       1   17.495       796     724.28 2.881e-05 ***
SibSp     1   10.842       795     713.43  0.000992 ***
Parch     1    0.863       794     712.57  0.352873    
Fare      1    0.994       793     711.58  0.318717    
Embarked  2    2.187       791     709.39  0.334990    

无效偏差(null deviance)和残差之间的差异越大越好。通过分析表格,我们可以看到每次添加一个变量时出现偏差的情况。同样,增加Pclass,Sex and Age可以显着减少残差。这里的大p值表示没有变量的模型或多或少地解释了相同的变化量。最终你想得到显着减少的偏差和AIC

评估模型的预测能力

在上面的步骤,我们简要评价模型的拟合。通过设置参数type='response',R将以P(y = 1 | X)的形式输出概率。我们的决策边界将是0.5。如果P(y = 1 | X)> 0.5,则y = 1,否则y = 0。请注意,对于某些应用场景,不同的阈值可能是更好的选择。

 fitting.results < - ifelse(fitted.results> 0.5,1,0)
misClasificError < - mean(fitted.results!= test $ Survived

测试集上的0.84精度是相当不错的结果。但是,如果您希望得到更精确的分数,最好运行交叉验证,如k折交叉验证验证。

作为最后一步,我们将绘制ROC曲线并计算二元分类器典型性能测量的AUC(曲线下面积)。

ROC是通过在各种阈值设置下将真阳性率(TPR)与假阳性率(FPR)作图而产生的曲线,而AUC是ROC曲线下的面积。作为一个经验法则,具有良好预测能力的模型应该接近于1。


http://www.ppmy.cn/news/185764.html

相关文章

360路由器v2刷第三方固件_己亥年网件R6220路由器刷openwrt固件的方法(亲测可用)...

本人三年前入手网件R6220路由器,就是看中其品牌和较高的性价比。刚开始使用没有问题,一直很稳定,除了无线网信号不好(其他房间使用360、TP等垃圾路由器桥接)。但是最近使用发现,经常是无线信号满格但是无法上网,重启路由器以后会好一点,用一段时间又变得断断续续,实在…

usb网卡带宽测试软件,腾达AC9与网件R6220无线性能和USB速度测试

腾达AC9这款双频无线ac无线路由器,目前售价240元左右,偶尔活动价199元。无线方面是2.4G 300m + 5G 867m ,2x2MIMO,都有PA和LNA。全博通芯片,CPU是BCM47189,运行内存128MB,闪存8MB,有beamforming,即波速成形技术,天线3dbi,估计适合覆盖上下两层。1wan+4lan全千兆网口…

网件刷breed_网件R6220刷breed变砖的维修

首先说下网件R6220路由器的特点,有多种固件支持,并且有breed和PB-BOOT不死uboot加持,可玩性很强,刷机较不易变砖。 但是少数情况下运气欠佳,刷机时候输错了命令,或者更奇葩的是在刷机关键过程中被猫绊掉了电源,就会出现彻底变砖的杯具。别笑,真有这样的情况!这种情况是…

网件R6220刷回原厂固件的奇葩经历

网件R6220刷回原厂固件的奇葩经历 因为想体验openwrt固件&#xff0c;刷的openwrt 使用一段时间后发现&#xff0c;手机能正常&#xff0c;电脑却总是断流&#xff0c;网页看视频断断续续&#xff0c;迅雷不断&#xff0c;下载游戏也断流 再就是openwrt需要安装Qos&#xff…

网件R6220刷机失败

网件R6220救砖 一、出现情况&#xff1a; 1、 路由器开机后电源出现重复启动&#xff1b; 2、 按路由器上的恢复按钮&#xff0c;出现2灯、3灯交替闪烁&#xff0c;无法ping通192.168.1.1 3、 使用nmrpflash.exe这个软件刷机&#xff0c;一直提示“No response after 60 second…

Netgear R6220桥接组网设置

现在netgear的A6210无线网卡和R6220路由器的价格基本上一样&#xff0c;如果对移动性没有要求的话&#xff0c;那么选择R6220&#xff0c;WDS桥接方式组网&#xff0c;将比单纯的A6210功能更强大&#xff0c;信号穿透能力更强。 网上没有找到两台R6220路由器WDS桥接组网的设置…

r6220 虚拟服务器,R6220折腾记录 2021-06-15 最终还是刷了openwrt

本帖最后由 友谊 于 2021-6-15 01:02 编辑 现在是2021-06-08 我总结一下我买了这个路由器以后的折腾过程吧 ############################ 首先如果想折腾的玩家必须要了解路由器的启动知识 说一下路由器的启动过程: 通电以后路由器会启动引导区 然后这个引导区再根据reset键是…

R6220关于breed刷机,breed-2022-07-24 r1416

最新版breed-2022-07-24 r1416 参考地址 https://www.right.com.cn/forum/thread-161906-1-1.html --- -现在全部使用 NAND 的版本均支持完善的坏块管理功能&#xff0c;包括升级时自动跳过坏块、备份编程器固件时自动跳过坏块。 -从这个版本开始&#xff0c;Breed 将只支持升级…