2018-10-18
阅读量:
900
怎么用R实现KS曲线
将代码封装在函数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数据框。
PlotKS_N<-function(Pred_Var, labels_Var, descending, N){
# Pred_Var is prop: descending=1
# Pred_Var is score: descending=0
library(dplyr)
df<- data.frame(Pred=Pred_Var, labels=labels_Var)
if (descending==1){
df1<-arrange(df, desc(Pred), labels)
}else if (descending==0){
df1<-arrange(df, Pred, labels)
}
df1$good1<-ifelse(df1$labels==0,1,0)
df1$bad1<-ifelse(df1$labels==1,1,0)
df1$cum_good1<-cumsum(df1$good1)
df1$cum_bad1<-cumsum(df1$bad1)
df1$rate_good1<-df1$cum_good1/sum(df1$good1)
df1$rate_bad1<-df1$cum_bad1/sum(df1$bad1)
if (descending==1){
df2<-arrange(df, desc(Pred), desc(labels))
0.0000
0
1
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
1条评论