將**封裝在函式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資料框。
**如下:
##############code##############
plotks_n
# pred_var is prop: descending=1
# pred_var is score: descending=0
library(dplyr)
dfif (descending==1)else if (descending==0)else if (descending==0){
df2df2$good2
df2$bad2
df2$cum_good2
df2$cum_bad2
df2$rate_good2
df2$rate_bad2
rate_good
rate_bad
df_ks
df_ks$ks
lif (n>l) n
df_ks$tile
qusqus
df_ks
df_ks$tile
df_0
df_ks
m_ks
popm_good
m_bad
# 作圖
library(ggplot2)
plotks
geom_line(aes(tile,rate_bad),
colour="red2",size=1.2)+
geom_line(aes(tile,rate_good),
colour="blue3",size=1.2)+
geom_line(aes(tile,ks),
colour="forestgreen",size=1.2)+
geom_vline(xintercept=pop,linetype=2,
colour="gray",size=0.6)+
geom_hline(yintercept=m_ks,linetype=2,
colour="forestgreen",size=0.6)+
geom_hline(yintercept=m_good,linetype=2,
colour="blue3",size=0.6)+
geom_hline(yintercept=m_bad,linetype=2,
colour="red2",size=0.6)+
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)+
scale_x_continuous(breaks=seq(0,1,.2))+
scale_y_continuous(breaks=seq(0,1,.2))+
xlab("of total population")+
ylab("of total bad/good")+
ggtitle(label="ks - chart")+
theme_bw()+
theme(
plot.title=element_text(colour="gray24",
size=12,face="bold"),
plot.background = element_rect(fill = "gray90"),
axis.title=element_text(size=10),
axis.text=element_text(colour="gray35")
result
plotks=plotks,df_ks=df_ks)
return(result)
##############over#############
接下來以實際資料為例檢視該函式的執行結果。
pred_train是建模得到的**結果,這裡是概率形式:
> pred_train
[1] 0.40418112 0.35814193 0.45220572 0.53482002 0.12923573 ...
labels_train是好壞標籤:
> labels_train
[1] 0 0 0 0 0 ...
函式執行的結果存放在train_ks裡:
train_ks
我們來檢視train_ks中的每一元素:
1、ks最大值
> train_ks$m_ks
[1] 0.4492765
2、ks取最大值的人數百分位置
> train_ks$pop
[1] 0.3803191
3、ks曲線物件
下篇將分享ks曲線的python實現方法。
ks 曲線 R語言計算KS值 繪製KS曲線
將 封裝在函式plotks n裡,pred var是 結果,可以是評分或概率形式 labels var是好壞標籤,取值為1或0,1代表壞客戶,0代表好客戶 descending用於控制資料按違約概率降序排列,如果pred var是評分,則descending 0,如果pred var是概率形式,則d...
ks 曲線 模型演算法基礎 KS曲線
原創 慄老師 金科應用研院 關於判斷邏輯回歸模型的分別能力,我們前面已經介紹了基尼係數和roc曲線,今天我們來介紹一下ks曲線。ks曲線主要體現了模型對違約物件的區分能力,通常是在模型 全體樣本的評分後,將全體樣本按好客戶 未逾期 和壞客戶 逾期 分為兩部分,然後用ks統計量來檢驗這兩組樣本評分的分...
ks 曲線 ROC曲線與KS曲線的理解
roc曲線 roc曲線是評判乙個模型好壞的標準,有兩個值要知道,fpr 假正率 和tpr 真正率 roc曲線就是以這兩個值為座標軸畫的。比如邏輯回歸得到的結果是概率,那麼就要取閾值來劃分正負,這時候,每劃乙個閾值,就會產生一組fpr和tpr的值,然後把這組值畫成座標軸上的乙個點,這樣,當選取多組閾值...