更多大数据分析、建模等内容请关注gongzhonghao《bigdatamodeling》

将代码封装在函数PlotKS_N里,Pred_Var是预测结果,可以是评分或概率形式;labels_Var是好坏标签,取值为1或0,1代表坏客户,0代表好客户;descending用于控制数据按违约概率降序排列,如果Pred_Var是评分,则descending=0,如果Pred_Var是概率形式,则descending=1;N表示在将数据按风险降序排列后,等分N份后计算KS值。

PlotKS_N函数返回的结果为一列表,列表中的元素依次为KS最大值、KS取最大值的人数百分位置、KS曲线对象、KS数据框。

代码如下:

1 #################### PlotKS_N ################################

2 PlotKS_N

3 # Pred_Var is prop: descending=1

4 # Pred_Var is score: descending=0

5 library(dplyr)

6

7 df

8

9 if (descending==1){

10 df1

11 }else if (descending==0){

12 df1

13 }

14

15 df1$good1

16 df1$bad1

17 df1$cum_good1

18 df1$cum_bad1

19 df1$rate_good1

20 df1$rate_bad1

21

22 if (descending==1){

23 df2

24 }else if (descending==0){

25 df2

26 }

27

28 df2$good2

29 df2$bad2

30 df2$cum_good2

31 df2$cum_bad2

32 df2$rate_good2

33 df2$rate_bad2

34

35 rate_good

36 rate_bad

37 df_ks

38

39 df_ks$KS

40

41 L

42 if (N>L) N

43 df_ks$tile

44 qus

45 qus

46 df_ks

47 df_ks$tile

48 df_0

49 df_ks

50

51 M_KS

52 Pop

53 M_good

54 M_bad

55

56 library(ggplot2)

57 PlotKS

58 geom_line(aes(tile,rate_bad),colour="red2",size=1.2)+

59 geom_line(aes(tile,rate_good),colour="blue3",size=1.2)+

60 geom_line(aes(tile,KS),colour="forestgreen",size=1.2)+

61

62 geom_vline(xintercept=Pop,linetype=2,colour="gray",size=0.6)+

63 geom_hline(yintercept=M_KS,linetype=2,colour="forestgreen",size=0.6)+

64 geom_hline(yintercept=M_good,linetype=2,colour="blue3",size=0.6)+

65 geom_hline(yintercept=M_bad,linetype=2,colour="red2",size=0.6)+

66

67 annotate("text", x = 0.5, y = 1.05, label=paste("KS=", round(M_KS, 4), "at Pop=", round(Pop, 4)), size=4, alpha=0.8)+

68

69 scale_x_continuous(breaks=seq(0,1,.2))+

70 scale_y_continuous(breaks=seq(0,1,.2))+

71

72 xlab("of Total Population")+

73 ylab("of Total Bad/Good")+

74

75 ggtitle(label="KS - Chart")+

76

77 theme_bw()+

78

79 theme(

80 plot.title=element_text(colour="gray24",size=12,face="bold"),

81 plot.background = element_rect(fill = "gray90"),

82 axis.title=element_text(size=10),

83 axis.text=element_text(colour="gray35")

84 )

85

86 result

87 return(result)

88 }

作图如下:

ks 曲线_R语言计算KS值、绘制KS曲线相关推荐

  1. R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值、plot.roc函数绘制ROC曲线、添加置信区间、为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来

    R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值.plot.roc函数绘制ROC曲线.添加置信区间.为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来 目录

  2. 语言nomogram校准曲线图_R语言实现Cox模型校准度曲线绘制

    01 研究背景 这是关于cox模型的第二篇文章,上一篇文章分享了运用Lasso回归如何筛选变量,将筛选后的变量绘制Nomogram图,本章分享构建模型后,如何绘制校准曲线. cox模型的验证不同于Lo ...

  3. R语言使用pROC包绘制ROC曲线、获取最优阈值(threshold)及最优阈值对应的置信区间

    R语言使用pROC包绘制ROC曲线并获取最佳阈值(threshold)及最佳阈值对应的置信区间 #ROC曲线 ROC(receiver operating characteristic curve)接 ...

  4. R语言使用pROC包绘制ROC曲线并使用smooth函数绘制平滑的ROC曲线(方法包括:binormal、density、fitdistr、logcondens、logcondens.smooth)

    R语言使用pROC包绘制ROC曲线并使用smooth函数绘制平滑的ROC曲线(方法包括:binormal.density.fitdistr.logcondens.logcondens.smooth) ...

  5. 偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度、敏感度角度

    偏AUC(partial AUC)或者部分AUC是什么?R语言使用pROC包绘制ROC曲线并定义偏AUC(partial AUC):分别聚焦特异度.敏感度角度 目录

  6. matlab roc曲线,MATLAB画ROC曲线,及计算AUC值

    标签: 根据决策值和真实标签画ROC曲线,同时计算AUC的值 function auc = roc_curve(deci,label_y) %%deci=wx+b, label_y, true lab ...

  7. matlab计算prc曲线auc面积,MATLAB画ROC曲线,及计算AUC值

    根据决策值和真实标签画ROC曲线,同时计算AUC的值 步骤: 根据决策值和真实标签画ROC曲线,同时计算AUC的值: 计算算法的决策函数值deci 根据决策函数值deci对真实标签y进行降序排序,得到 ...

  8. python的roc曲线与阈值_python 使用sklearn绘制roc曲线选取合适的分类阈值

    https://zhuanlan.zhihu.com/p/26293316 比如, 我已经初步训练好了一个模型,现在我想用这个模型从海量的无标记数据集挖掘出某一类数据A,并且想要尽量不包含其他所有类B ...

  9. python画pr曲线代码_Yolov3测试图及绘制PR曲线,yoloV3,map,和,画

    训练指令:./darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 | tee train_yolov3.lo ...

最新文章

  1. [BZOJ1984] 月下“毛景树”
  2. OpenCV A-KAZE匹配的实例(附完整代码)
  3. java中循环语句_Java语法基础之循环结构语句详解
  4. antdesign的表单中的下拉框设置默认值BUG处理
  5. 2019年6月 阿里技术面试题集锦(28道含答案)
  6. rsync+sersync大数据T级以上进行同步方法
  7. mysql水平分表实践记录_MYSQL 分表实践
  8. android 编译,gradle
  9. 串口的原始模式和标准模式
  10. 疫情数据汇总为csv文件
  11. 小程序轮播图组件跳转到自定义页面
  12. 香港的房价真的那么贵吗?用数据挖掘真相!
  13. 2.基于文心大模型套件ERNIEKit实现文本匹配算法,模块化方便应用落地
  14. 真正的高手,都在培养系统
  15. 常见游戏设计思路及手法
  16. 【2022年终总结】总结自己的2022,展望2023
  17. 如何对构建基因克隆的测序结果批量进行序列比对并输出结果
  18. riscv-gnu-toolchain工具链-从下载到运行
  19. ffmpeg播放MP4视频与分离音频
  20. 论月饼黑科技和云蛛系统产品线的殊同

热门文章

  1. 如何进行shell脚本正确性测试
  2. 短信平台源码专业版功能介绍(可接入任何线路的短信接口)|移讯云短信系统
  3. Java语言程序设计与数据结构(基础篇)梁勇第九章 *9.3
  4. 如何使用python实现简单爬取网页数据并导入MySQL中的数据库
  5. 怎么将heic转为jpg格式,哪个图片转换器好用
  6. 8B10B编解码原理与FPGA代码
  7. 通过加速度计和陀螺仪解算姿态
  8. 长短时记忆网络(Long Short Term Memory,LSTM)详解
  9. 用Python如何开发Excel宏脚本?新手必学
  10. 数据库MySQL之如何添加、删除列?