离散型的二分类变量(预测值只有两种,如0或1)在没有做转化是无法进行回归分析(一般回归分析适用于连续型变量),我们可以借助广义线性回归模型logistic回归对二分类变量进行转化(对预测值使用了逻辑函数,也即是预测值的范围是0到1),最终实现回归分析。
logistic regression基础
- logistic 函数:
- logistic方程和logistic曲线:逻辑曲线在z=0时,十分敏感,在z>>0或z<<0处,都不敏感,将预测值限定为(0,1)
加载数据
1 | # install.packages("ISLR") # 使用该包的数据 |
1 | default student balance income |
训练模型
构建训练集和测试集
训练模型
1 | set.seed(123) |
1 | Call: |
ROC曲线
获取预测值: type的值可以是“link”, “response”, “terms”
(需要了解下有何区别)- link:
- response:因变量分类变量预测为”Yes|No”的概率值
- terms:自变量预测的概率值(待定)
1 | predicted <- predict(fit, test, type="response") |
1 | 4 6 7 15 17 18 |
Notes:每个样本对应的预测值是数字而不是我以为的 default的 ”Yes|No“
Notes:测试样本的default预测为”Yes|No“的概率值(待定)
- 获取ROC曲线:通过pROC的roc和auc函数分别获取roc对象和auc值
1
2
3
4library(ggplot2)
library(pROC)
rocobj <- roc(test$default, predicted)
auc <- round(auc(test$default, predicted),4) 可视化结果
- legacy.axes 控制specificity(x 轴)是否升序排列
geom_abline 添加对角线
annotate 添加AUC结果
coord_cartesian 设置坐标轴范围
family=”serif” 设置新罗马字体
1 | ggroc(rocobj, color = "red", linetype = 1, size = 1, alpha = 1, legacy.axes = T)+ |
R Information
1 | sessionInfo() |
1 | R version 4.0.3 (2020-10-10) |
参考
参考文章如引起任何侵权问题,可以与我联系,谢谢。