当前位置:首页|资讯

R语言学习笔记:逻辑回归和ROC曲线

作者:DukeDuckDarkside发布时间:2024-09-30

一、逻辑回归的数学模型

    逻辑回归,logistic regression,是一种常用的广义线性回归模型,主要适用于一些二分类模型和用于拟合某种事件发生的概率。常见的例子有估计某种疾病随着年龄的增大而发生的概率,或者信用卡的签发与否和申请人的某些特征之间的关系。应用十分广泛。

    逻辑回归的表达式是:

logit%EF%BC%88P%EF%BC%89%3D%5Cbeta_0%2B%5Cbeta_1x_1%2B...%2B%5Cbeta_ix_i

其中,P代表的是事件成功的概率。链接函数logit展开的形式是这样子的:

logit(P)%20%3D%20log(%5Cfrac%7BP%7D%7B1-P%7D)

如果我们将函数式变换为只有P在公式的左边,那么逻辑回归的样子就会变成下面这样:

P%20%3D%20%5Cfrac%7Be%5E%7B%5Cbeta%20X%7D%7D%7B1%2Be%5E%7B%5Cbeta%20X%7D%7D

 这样分类,或者事件成功的概率就会被限定在0~1之间。

    在R中,拟合逻辑回归的函数是glm()。我们使用R再带的mtcars数据来演示下面的内容。

二、使用R拟合逻辑回归模型

    mtcars数据中将被使用的变量如下:

  • mpg:miles/gallon,每加仑油能跑多少英里

  • disp:车的排量

  • vs:引擎类型,0=V-shaped,1=straight

  • am:传动方式,0=automatic,1=manual

    我们建立一个简单的模型,使用mpg和am变量以及他们的交叉效应预测车的vs的类型,拟合模型的代码如下:

拟合结果

    由于我们对于自变量的设定是1=straight,所以模型预测的概率是在当前条件下车的引擎为straight的概率。为了直观的显示,我们可以通过绘图的方式来展示在两种传动方式之间,使用每公里耗油量预测引擎类型的模型:

逻辑回归模型曲线

三、ROC曲线

    ROC曲线是一种可以评价分类模型预测能力好坏的方法。针对逻辑回归,multipleROC包提供了一些特别简便的方法绘制模型的ROC曲线。下载multipleROC包的代码如下:

    我们依然采用上面的模型,计算ROC和绘制ROC的代码如下:

ROC图

    multipleROC()的需要输入模型和数据集,函数本身默认自动输出图,如果不想的话可以设置plot=FALSE。当然可能读者会觉得这个图里面的信息太多了,想去掉一些,那么可以将multipleROC的结果赋值给变量a,然后输入给使用plot_ROC()函数,通过设定plot_ROC里面逻辑参数可以控制图中信息的显示与否,比如下面的例子:

ROC图2

    我们有的时候可能拟合了不止一个模型,想要对比模型之间的优劣。plot_ROC()函数的第一个参数可以接受一个roc结果组成的list,并且plot_ROC输出的是一个ggplot类,因此可以使用ggsave函数输出高清图片:

plot2结果

    如果想要分开三个ROC曲线,可以设置plot_ROC()里面的facet=TRUE:

plot3结果

    同样,我们可以使用ggplot2的语句修改plot_ROC的结果,比如下面的代码:

plot4结果

    总体来说还是比较简单的,并且能继续使用ggplot2的语句,十分的方便。由于全部的代码都可以直接复制,数据也是R里面自带的,这次就不放代码链接了。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1