1. 程式人生 > >《信用風險評分卡研究——基於SAS的開發與實施》學習筆記(1)

《信用風險評分卡研究——基於SAS的開發與實施》學習筆記(1)



所有模型都要進行前期資料準備工作。在此,假設所有資料都已經準備完畢。

注:該系列文章都是學習馬姆杜 雷法特著的《信用風險評分卡研究——基於SAS的開發與實施》一書時的學習記錄和練手,供以後自己檢視。畢竟,。如有不準確或不清楚的地方,請查詢原著。

WOE證據權重法

1.WOE計算方法

  • 計算該變數不同類別的正常、違約佔比分佈。(=該類別的正常頻數/該變數的正常頻數)
  • 該類別的WOE=ln(違約分佈/正常分佈)。

2.不同變數的WOE

  • 連續變數——最有分段、等寬分段

3.基於SAS的等寬分段

  • 程式碼如下:
%macro EqwBin(Dsin,Xvar,Nb,XBvar,Dsout,Dsmap);
/*通過Sql語句獲得連續變數的最值,並存儲*/
proc sql noprint;
	select max(&Xvar) into :Vmax from &Dsin;
	select min(&Xvar) into :Vmin from &Dsin;
run;
quit;

%let Bs=%sysevalf((&Vmax-&Vmin)/&Nb);

/*獲得每個連續變數所在的區間*/
data &Dsout;
set &Dsin;
	%do i=1 %to &Nb;
	%let Bin_R=%sysevalf(&Vmin+&i*&Bs);
	%let Bin_L=%sysevalf(&Bin_R-&Bs);
	%if &i=1 %then %do;
		if &Xvar>=&Bin_L and &Xvar<=&Bin_R then &XBvar=&i;
		%end;
	%if &i>1 %then %do;
		if &Xvar>&Bin_L and &Xvar<=&Bin_R then &XBvar=&i;
		%end;
	%end;
run;

/*儲存變數分割槽*/
proc sql noprint;
create table &Dsmap(Bin_no num,Bin_min num,Bin_max num);
%do i=1 %to &Nb;
	%let Bin_R=%sysevalf(&Vmin+&i*&Bs);
	%let Bin_L=%sysevalf(&Bin_R-&Bs);
	insert into &Dsmap values(&i,&Bin_L,&Bin_R);
%end;
run;
quit;
%mend;	
</pre><pre class="html" name="code">/*呼叫巨集*/
%EqwBin(Ccmodel.Creditcard,CustAge,5,CustAge_b,Ccmodel.CC1,Ccmodel.Age_Map);
%EqwBin(Ccmodel.CC1,TmAtAddress,5,TmAtAddress_b,Ccmodel.CC2,Ccmodel.TmAtAddress_Map);
%EqwBin(Ccmodel.CC2,CustIncome,5,CustIncome_b,Ccmodel.CC3,Ccmodel.CustIncome_Map);
%EqwBin(Ccmodel.CC3,TmWBank,5,TmWBank_b,Ccmodel.CC4,Ccmodel.TmWBank_Map);
%EqwBin(Ccmodel.CC4,AmBalance,5,AmBalance_b,Ccmodel.CC5,Ccmodel.AmBalance_Map);
%EqwBin(Ccmodel.CC5,UtliRate,5,UtliRate_b,Ccmodel.CC6,Ccmodel.UtliRate_Map);

run;


  • quit與run:

     SAS的過程從壽命來分有兩大類,一大類是過程執行完後自動退出,大多數的SAS過程都是這樣,過程直接加Run就可以了;另一大類是互動性質的過程,過程啟動後不會主動退出,可以後續接著執行這個過程的一些其它命令,最後需要用Qiut命令退出這個過程,如:Proc SQL,Proc IML等。本文來自: 人大經濟論壇 SAS專版 版,詳細出處參考:http://bbs.pinggu.org/forum.php?mod=viewthread&tid=1189280&page=1