热线电话:13121318867

登录
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
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子