逻辑回归,logistic regression,是一种常用的广义线性回归模型,主要适用于一些二分类模型和用于拟合某种事件发生的概率。常见的例子有估计某种疾病随着年龄的增大而发生的概率,或者信用卡的签发与否和申请人的某些特征之间的关系。应用十分广泛。
逻辑回归的表达式是:
其中,P代表的是事件成功的概率。链接函数logit展开的形式是这样子的:
如果我们将函数式变换为只有P在公式的左边,那么逻辑回归的样子就会变成下面这样:
这样分类,或者事件成功的概率就会被限定在0~1之间。
在R中,拟合逻辑回归的函数是glm()。我们使用R再带的mtcars数据来演示下面的内容。
mtcars数据中将被使用的变量如下:
mpg:miles/gallon,每加仑油能跑多少英里
disp:车的排量
vs:引擎类型,0=V-shaped,1=straight
am:传动方式,0=automatic,1=manual
我们建立一个简单的模型,使用mpg和am变量以及他们的交叉效应预测车的vs的类型,拟合模型的代码如下:
由于我们对于自变量的设定是1=straight,所以模型预测的概率是在当前条件下车的引擎为straight的概率。为了直观的显示,我们可以通过绘图的方式来展示在两种传动方式之间,使用每公里耗油量预测引擎类型的模型:
ROC曲线是一种可以评价分类模型预测能力好坏的方法。针对逻辑回归,multipleROC包提供了一些特别简便的方法绘制模型的ROC曲线。下载multipleROC包的代码如下:
我们依然采用上面的模型,计算ROC和绘制ROC的代码如下:
multipleROC()的需要输入模型和数据集,函数本身默认自动输出图,如果不想的话可以设置plot=FALSE。当然可能读者会觉得这个图里面的信息太多了,想去掉一些,那么可以将multipleROC的结果赋值给变量a,然后输入给使用plot_ROC()函数,通过设定plot_ROC里面逻辑参数可以控制图中信息的显示与否,比如下面的例子:
我们有的时候可能拟合了不止一个模型,想要对比模型之间的优劣。plot_ROC()函数的第一个参数可以接受一个roc结果组成的list,并且plot_ROC输出的是一个ggplot类,因此可以使用ggsave函数输出高清图片:
如果想要分开三个ROC曲线,可以设置plot_ROC()里面的facet=TRUE:
同样,我们可以使用ggplot2的语句修改plot_ROC的结果,比如下面的代码:
总体来说还是比较简单的,并且能继续使用ggplot2的语句,十分的方便。由于全部的代码都可以直接复制,数据也是R里面自带的,这次就不放代码链接了。