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






評論(0)


暫無數(shù)據(jù)
推薦帖子
0條評論
0條評論
0條評論