pythonks值计算_SAS—计算K-S值及画图

pythonks值计算_SAS—计算K-S值及画图
近来,时于夜半下⾬,也常在梦⾥被⾬扰醒。究其原因,也是因为近来⼯作⽆趣,本⾝也只喜欢写写SAS或Python代码,做模型,可近来却连数据权限都没有,万灰俱灭。⾬声轻轻,却也容易愁闷得睡不着。想着要去外包,却因⾃⼰的犹豫不决也没有去成。
好了,不说废话了。昨天有⼈在上问KS的计算⽅式。今天介绍⼀下KS值吧。
先看⼀段程序:
data logistic;
input accident age vision drive;
datalines;
1 17 1 1
1 44 0 0
1 48 1 0
1 55 0 0
1 75 1 1
0 35 0 1
0 42 1 1
中国扬州寄语市长0 57 0 0
0 28 0 1
0 20 0 1
0 38 1 0
0 45 0 1
0 47 1 1
0 52 0 0
0 55 0 1
1 68 1 0
1 18 1 0
1 68 0 0
1 48 1 1
1 17 0 0
1 70 1 1
1 7
2 1 0
1 35 0 1
1 19 1 0
1 6
2 1 0
0 39 1 1
0 40 1 1
0 55 0 0
0 68 0 1
0 25 1 0
0 17 0 0
0 45 0 1
澳门特别行政区区徽
0 44 0 1
0 67 0 0
0 55 0 1
1 61 1 0
1 19 1 0
1 69 0 0
1 23 1 1
1 19 0 0
1 7
2 1 1
1 74 1 0
1 31 0 1
1 16 1 0
1 61 1 0
;
proc logistic data=logistic outest=model;
model accident(event='1')=age vision drive/selection=stepwise
sle=0.05 sls=0.05 outroc=roc;
output out= pred p=p1 ;
run;
proc npar1way data=pred noprint;
class accident;
var p1;r2v
output out=ks;
run;
以上是⼀段常规的计算KS值。
⾸先要了解什么是KS值,K-S值(kolmogorov-smirnov
清华紫光笔记本
curve)将总体进⾏n等分组并按照违约概率降序排列,计算每⼀等份中违约与正常百分⽐的累积分布,绘制出两者之间的差值就是K-S曲线。其中K-S曲线中的最⼤值即为K-S统计量,取值范围在0到1之间。
以下是计算K-S值及画图的宏程序:
/**data:逻辑回归后包含验证结果的数据集,var:违约概率变量,status:分类变量,data1:切分后的变量,Mks:最⼤ks值,M:分组组数**/
%macro KS(data, var, status, data1, Mks,M);
proc sort data=&data;
by &var;
run;
proc sql noprint;
select sum(&status) into:P from &data;
select count(*) into :Ntot from &data;
quit;
%let N=%eval(&Ntot-&P);
data &data1;
set &data nobs=NN;
by &var;
retain tile 1 totP 0 totN 0;
Tile_size=ceil(NN/&M);
if &status=1 then totP=totP+&status;
中国教师行动网else totN=totN+1;
Pper=totP/&P;
Nper=totN/&N;
if _N_ = Tile*Tile_Size then
do;
output;
if Tile
do;
Tile=Tile+1;
SumResp=0;
end;
end;
keep Tile Pper Nper;
run;
data temp;
Tile=0;
enthalpicPper=0;
NPer=0;
run;
Data &data1;
set temp &data1;
run;
data &data1;
set &data1;
Tile=Tile/&M;
label Pper='Percent of Positives';
label NPer ='Percent of Negatives';
label Tile ='Percent of population';
KS=NPer-PPer;
run;
proc sql noprint;
select max(KS) into :&Mks from &data1;
run; quit;
proc datasets library=work nodetails nolist;
delete temp ;
run;
quit;
%mend;
%macro PlotKS(data1);
symbol1 value=dot color=red interpol=join height=1; legend1 position=top;
symbol2 value=dot color=blue interpol=join height=1; symbol3 value=dot color=green interpol=join height=1; proc gplot data=&data1;
plot( NPer PPer KS)*Tile / overlay legend=legend1; run;
quit;
goptions reset=all;
%mend;

本文发布于:2024-09-21 01:21:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/505591.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:计算   违约   概率   中国   绘制   数据   写写
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议