ks 曲線 R語言實現KS曲線

2021-10-14 11:17:03 字數 3330 閱讀 2338

將**封裝在函式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的值,然後把這組值畫成座標軸上的乙個點,這樣,當選取多組閾值...