2018-10-18
閱讀量:
990
怎么用R實(shí)現(xiàn)KS曲線
將代碼封裝在函數(shù)PlotKS_N里,Pred_Var是預(yù)測(cè)結(jié)果,可以是評(píng)分或概率形式;labels_Var是好壞標(biāo)簽,取值為1或0,1代表壞客戶,0代表好客戶;descending用于控制數(shù)據(jù)按違約概率降序排列,如果Pred_Var是評(píng)分,則descending=0,如果Pred_Var是概率形式,則descending=1;N表示在將數(shù)據(jù)按風(fēng)險(xiǎn)降序排列后,等分N份后計(jì)算KS值。
PlotKS_N函數(shù)返回的結(jié)果為一列表,列表中的元素依次為KS最大值、KS取最大值的人數(shù)百分位置、KS曲線對(duì)象、KS數(shù)據(jù)框。
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))






評(píng)論(0)


暫無數(shù)據(jù)
CDA考試動(dòng)態(tài)
CDA報(bào)考指南
推薦帖子
0條評(píng)論
0條評(píng)論
0條評(píng)論