楼主: changgz
3809 1

[SAS] 连续变量分箱Logit图 [推广有奖]

  • 2关注
  • 27粉丝

讲师版主

已卖:40份资源

讲师

13%

还不是VIP/贵宾

-

威望
0
论坛币
749999 个
通用积分
15.3027
学术水平
59 点
热心指数
57 点
信用等级
50 点
经验
3913 点
帖子
122
精华
2
在线时间
417 小时
注册时间
2013-10-28
最后登录
2025-8-10

楼主
changgz 发表于 2015-3-9 17:09:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
     在构建线形回归模型时,我们用观看x与y之间散点图的方式确定x以何种方式纳入回归模型,比如是取二次方形式,还是对数形式。

      而做逻辑回归时,也需要一种图形观看连续变量x与logit(y)的关系,可以SAS本身没有提供,需要我们自行绘制。以下就是做好的一个宏。



  1. /****************************************************************************/
  2. %Macro E_Logit(data,target,var,bins);
  3. /*第一步:对变量进行RANK分组*/
  4. proc rank data=&data groups=&bins out=out;
  5.    var &var;
  6.    ranks bin;
  7. run;
复制代码
  1. /*第二步:对每一组计算该变量的平均值;响应事件数和总事件数**/

  2. /*数据集BINS 包含:          */
  3. /* &target = 每个BIN里面响应事件数 */
  4. /* _FREQ_ =每个BIN里面总事件数 */
  5. /* &var =每个BIN里面&var平均值 */

  6. proc means data=out noprint nway;
  7.    class bin;
  8.    var &target &var;
  9.    output out=bins sum(&target)=&target mean(&var)=&var;
  10. run;
复制代码
  1. /*第三步:根据公式计算 empirical logit */
  2. data bins;
  3.    set bins;
  4.    elogit=log((&target+(sqrt(_FREQ_ )/2))/
  5.           ( _FREQ_ -&target+(sqrt(_FREQ_ )/2)));
  6. run;
复制代码
  1. /*第四步:画LOGIT与原变量平均值;LOGIT与BIN变量的线图*/
  2. /*proc sgplot data = bins;*/
  3. /*title "Empirical Logit against &var";*/
  4. /*series y=elogit x=&var;*/
  5. /*scatter y=elogit x=&var;*/
  6. /*run;*/
  7. proc sgplot data = bins;
  8. title "Empirical Logit against Binned &var";
  9. scatter y=elogit x=bin;
  10. series y=elogit x=bin;
  11. run;quit;
复制代码
  1. /*第五步:用BIN变量替代原来的变量,并对BIN变量进行代码保存和改造*/

  2. title;

  3. proc means data = out noprint nway;
  4.    class bin;
  5.    var  &var;
  6.    output out=endpts  max(&var)=max;
  7. run;

  8. filename rank "d:\rank.sas";

  9. /*编写BIN代码*/
  10. data _null_;
  11.    file rank;
  12.    set endpts end=last;
  13.    if _n_ = 1 then put "select;";
  14.    if not last then do;
  15.      put "  when (&var <= " max ") B_&var =" bin ";";
  16.      end;
  17.    else if last then do;
  18.      put "otherwise B_&var =" bin ";";
  19.      put "end;";
  20.    end;
  21. run;

  22. /* Use the code. */
  23. data &data;
  24.    set &data;
  25.    %include rank /source2;
  26. run;

  27. /*proc means data = &data min max;*/
  28. /*   class B_&var;*/
  29. /*   var &var;*/
  30. /*run;*/
  31. proc delete data=out bins endpts;run;
  32. %Mend E_Logit;

  33. /****************************************************************************/
  34. /*%Macro E_Logit(数据集,二分目标变量,连续自变量,分箱个数);*/
  35. %E_Logit(gg,flag,score,5);
  36. run;
  37. %E_Logit(tel,churn,avPlan,4);
  38. run;
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Logit图 logit 连续变量 Log Empirical groups target 平均值 散点图 模型 连续变量 分箱 Logit图 sas

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
xddlovejiao1314 + 100 + 100 + 5 + 5 + 5 精彩帖子
niuniuyiwan + 60 + 60 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 160  论坛币 + 160  学术水平 + 10  热心指数 + 10  信用等级 + 10   查看全部评分

本帖被以下文库推荐

沙发
xddlovejiao1314 学生认证  发表于 2015-11-4 23:07:33
好贴,谢谢分享。
已有 1 人评分论坛币 热心指数 收起 理由
niuniuyiwan + 10 + 1 精彩帖子

总评分: 论坛币 + 10  热心指数 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 22:28