逻辑回归是拟合回归曲线的方法,当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。

在R语言中实现Logistic逻辑回归相关推荐

  1. R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)

    R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录

  2. r语言logistic回归_R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用...

    原文链接 :http://tecdat.cn/?p=14017​tecdat.cn 通常,我们在回归模型中一直说的一句话是" 请查看一下数据 ". 在上一篇文章中,我们没有查看数据 ...

  3. r 多元有序logistic回归_R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用...

    原文链接 拓端数据科技 / Welcome to tecdat​tecdat.cn 通常,我们在回归模型中一直说的一句话是" 请查看一下数据 ". 在上一篇文章中,我们没有查看数据 ...

  4. R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

    原文链接:http://tecdat.cn/?p=21444 逻辑logistic回归是研究中常用的方法,可以进行影响因素筛选.概率预测.分类等,例如医学研究中高通里测序技术得到的数据给高维变量选择问 ...

  5. 多元有序logistic回归_R语言多元Logistic逻辑回归 应用案例

    原文链接: http://tecdat.cn/?p=2640 ​tecdat.cn 可以使用逐步过程确定多元逻辑回归.此函数选择模型以最小化AIC. 如何进行多元逻辑回归 可以使用阶梯函数通过逐步过程 ...

  6. R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择分类心肌梗塞数据模型案例...

    全文下载链接:http://tecdat.cn/?p=21444 在本文中,逻辑logistic回归是研究中常用的方法,可以进行影响因素筛选.概率预测.分类等,例如医学研究中高通里测序技术得到的数据给 ...

  7. R语言glm拟合logistic回归模型实战:基于glm构建逻辑回归模型及模型系数统计显著性分析、每个预测因子对响应变量的贡献

    R语言glm拟合logistic回归模型实战:基于glm构建逻辑回归模型及模型系数统计显著性分析.每个预测因子对响应变量的贡献 目录

  8. R语言使用broom包将回归模型(线性回归、逻辑回归、比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集

    R语言使用broom包将回归模型(线性回归.逻辑回归.比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集 目录

  9. logistic逻辑回归公式推导及R语言实现

    Logistic逻辑回归 Logistic逻辑回归模型 线性回归模型简单,对于一些线性可分的场景还是简单易用的.Logistic逻辑回归也可以看成线性回归的变种,虽然名字带回归二字但实际上他主要用来二 ...

最新文章

  1. ABAP实践学习——包材分配表
  2. Ubuntu14.04无法在var/www内新建文档
  3. 属性名、变量名与 内部关键字 重名 加
  4. HTML、CSS知识点总结,浅显易懂。
  5. 九大经典算法之归并排序
  6. Visio的VBA初探
  7. 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView...
  8. android封装aidl接口,Android远端接口AIDL及服务回调用法
  9. Object.create()和new object()和{}的区别
  10. 三星电子第二季芯片需求大增 但手机销售疲软
  11. 孩子学习缺乏主动性,应该怎么做?
  12. 三次技术转型,程序员的北漂奋斗史
  13. session.createQuery()不执行和java.lang.reflect.InvocationTargetException
  14. 第四季-专题2-U-Boot新手入门
  15. python 判断数字连续_零基础如何自学python? 这些知识点是你进阶的必经之路
  16. 模拟QQ上面的导航按钮
  17. wps软件打不开共享超链接_wps excel的超链接打不开怎么办?
  18. CodeCraft-20 (Div. 2) E. Team Building(状压dp)
  19. OKR工作法学习心得
  20. 分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理

热门文章

  1. autojs之超椭圆
  2. Abaqus模拟偏心受压钢管混凝土柱计算受压承载力(浇筑混凝土之前钢管存在初始缺陷)
  3. 名帖145 行书《兰亭八柱帖》第三册:冯承素摹兰亭序
  4. 什么是单片机AD的精度
  5. FMVSS 302 汽车内饰材料水平燃烧测试
  6. 浅谈电力物联网在智能配电系统应用
  7. 支付功能测试用例(参考微信平台)
  8. php sftp文件上传 文件上传
  9. oracle truncate很慢,ORACLEl数据库truncate分区表很慢问题 | 信春哥,系统稳,闭眼上线不回滚!...
  10. AttributeError: ‘_io.TextIOWrapper‘ object has no attribute ‘colse‘