京公网安备 11010802034615号
经营许可证编号:京B2-20210330
那么这个代码是用于建模初期,你为了大概了解变量的一个基本特征写的,不是最优分组哈,因为这个代码是将变量最多分为12组,分这么多组的原因也是为了更好的观察特征而已啦,你要是觉得太多组,你可以改下树的深度这些调整一下,这里关于变量特征怎么看,我就不说了.....
%macro
zhandapao(data,DVAR,id,dir);
proc datasets lib=work nodetails;
delete
varname_total;
run;
/*建立数值型数据集*/
%let lib=%upcase(%scan(&data.,1,'.'));
%letdname=%upcase(%scan(&data.,2,'.'));
%globalvar_list var_num;
proc sql noprint;
select name,count(*) into :var_list separated by' ',:var_num
from sashelp.VCOLUMN
where left(libname)="&lib."and
left(memname)="&dname."and
type="num"and
lowcase(name)^=lowcase("&DVAR.")
and lowcase(name)^="&id.";
quit;
%put
&var_list.;
/*把数值型变量定义为宏变量*/
%doi=1%to&var_num.;
%letnumvar_name_&i.=%scan(&var_list.,&i.);
%put&numvar_name_1.;
proc split data=&data.splitsize=300
maxbranch=2
MAXDEPTH=5nsurrs=5
assess=lift criterion=gini;
input &&numvar_name_&i./level=interval;
target &DVAR./level=binary;
Score data=&data.out=d_&&numvar_name_&i.;
code file="&dir.treecode_tic_&&numvar_name_&i..sas";
describe file="&dir.treerule_tic_&&numvar_name_&i..txt";
run;
data n_D_&&numvar_name_&i.;
set d_&&numvar_name_&i.;
%include"&dir.treecode_tic_&&numvar_name_&i..sas";
rename p_&DVAR.1=p_&&numvar_name_&i.;
run;
proc sql noprint;
select count(*),max(&&numvar_name_&i.),min(&&numvar_name_&i.)into:total, :max ,:min from n_D_&&numvar_name_&i.;
quit;
data n_D_&&numvar_name_&i.;
set n_D_&&numvar_name_&i.;
if &min.<=&&numvar_name_&i.<=&max.
then flag="no_null";
else flag="null";
run;
proc sql;
select count(*) into:is_null from
n_D_&&numvar_name_&i.;
quit;
%if&is_null.>0%then%do;
proc sql noprint;
select count(*),max(&&numvar_name_&i.),min(&&numvar_name_&i.)into:total,:max ,:min from n_D_&&numvar_name_&i.;
create table total as
select"&&numvar_name_&i."as
varname,
min(&&numvar_name_&i.) as interval_1,
max(&&numvar_name_&i.) as interval_2,
compress(put(min(round(&&numvar_name_&i.,0.0001)),best32.))||'-'||compress(put(max(round(&&numvar_name_&i.,0.0001)),best32.)) as interval,
sum(&DVAR.) as bad_num,
count(*) as total_num,
count(*)/&total.as num_rate,
sum(&DVAR.)/count(*) as bad_rate
from n_D_&&numvar_name_&i.
group by p_&&numvar_name_&i.
union all
select"&&numvar_name_&i."as varname,
-9999as interval_1,
-9999as interval_2,
'null'as interval,
sum(&DVAR.) as bad_num,
count(*) as total_num,
count(*)/&total.as num_rate,
sum(&DVAR.)/count(*) as bad_rate
from n_D_&&numvar_name_&i.(where=(&&numvar_name_&i.=.))
group by p_&&numvar_name_&i.
order by interval_1;
quit;
%end;
%else%do;
proc sql noprint;
select count(*),max(&&numvar_name_&i.),min(&&numvar_name_&i.)into:total,:max ,:min from n_D_&&numvar_name_&i.;
create table total as
select"&&numvar_name_&i."as varname,
min(&&numvar_name_&i.) asninterval_1,
max(&&numvar_name_&i.) as interval_2,
compress(put(min(round(&&numvar_name_&i.,0.0001)),best32.))||'-'||compress(put(max(round(&&numvar_name_&i.,0.0001)),best32.)) as interval,
sum(&DVAR.) as bad_num,
count(*) as total_num,
count(*)/&total.as num_rate,
sum(&DVAR.)/count(*) as bad_rate
from n_D_&&numvar_name_&i.
group by p_&&numvar_name_&i.
order by interval_1;
quit;
%end;
data &&numvar_name_&i.;
set total;
group=_n_;
run;
proc append base=varname_total
data=&&numvar_name_&i.
force;run;
proc datasets lib=work nodetails;
delete total n_: d_:
&&numvar_name_&i.
_namedat;
quit;
%end;
%mend;
解释一下这个代码怎么用,这个宏已经是封装好了的,直接填入参数就可以用了:
zhandapao(data,DVAR,id,dir);
data:填入你的数据集
DVAR:填入你的因变量
id:填入你的数据集的主键
dir:这个你需要填一个路径,是用来放决策树的规则的文件下,决策树的规则文件你看不懂没关系,你填个类似“F/DD”的路径就可以了。
例子:%zhandapao(DD.TEST_DATA,y,CUSTOMER_id,D:test_1);
结果图就是这样子:
那么今天的更新就到这里啦
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在游戏产业的商业逻辑中,付费玩家是支撑游戏生存与发展的核心支柱。行业普遍遵循 “二八定律”:20% 的付费玩家贡献了游戏 80% ...
2026-06-11【核心关键词】企业、定位、传统、产品、互联网、可视化、业务侧、数字化、结构化、数据分析、传统制造业、市场状态、发展空间 ...
2026-06-11 解读《CDA二级教材:量化策略分析(2025)》的全景结构与学习逻辑 ” CDA二级认证是企业招聘数据分析师时最常提及的证书门槛 ...
2026-06-11【核心关键词】药企、可视化、营销、分类、数据分析师、销售数据、业务人员、指导方向、分析报告、营销数据、营销医生 【专访摘 ...
2026-06-10在统计学分析、问卷调研、实验验证、业务复盘等场景中,卡方检验与 T 检验是应用最广泛的两类基础假设检验方法。前者专门处理分 ...
2026-06-10 很多数据分析师每天都在计算指标、制作报表,但当被问到“什么叫指标数据元”“指标数据标准包含哪些核心维度”“指标数据质 ...
2026-06-10在MySQL数据库日常查询、数据统计、后台接口开发、数据导出等场景中,开发者经常需要查询数据表除某几列之外的所有字段。例如查 ...
2026-06-09在Python网络请求、爬虫开发、接口测试、数据抓取等实操场景中,requests库是最常用的第三方请求工具,而content属性是requests ...
2026-06-09 数据分析正在重塑每一个行业。CDA认证的三本官方教材,分别对应Level I、Level II、Level III,为你铺就从业务数据分析到数 ...
2026-06-09在数字财务、智慧财税、业财融合深度推进的当下,传统财务模式下数据标准混乱、业务流程碎片化、知识无法沉淀、系统互通性差等问 ...
2026-06-08随着数字经济深度渗透各行各业,数据正式成为继土地、劳动力、资本、技术之后的第五大生产要素,是企业数字化转型、精细化运营、 ...
2026-06-08 很多数据分析师能熟练写SQL、做透视表,但当被问到“数据是从哪里来的?经过哪些加工才进入数据仓库?ETL具体做了什么?”时 ...
2026-06-08【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-05在数据库数据查询、业务报表统计、多表关联分析中,LEFT JOIN左连接是使用率最高的SQL关联查询语句。其核心特性是保留左表全部数 ...
2026-06-05 很多数据分析师能熟练地写SQL、做透视表、算描述性统计,但当被问到“如何预测用户流失概率”“如何归因销量下滑的关键因素 ...
2026-06-05任何一款产品从诞生、普及到最终退出市场,都会遵循一套固定的发展规律,这就是产品生命周期理论。在市场竞争日益激烈、产品迭代 ...
2026-06-04在Excel数据分析、办公统计、业务报表制作场景中,数据透视表是数据汇总、分类统计、快速复盘的核心工具,能够高效完成海量原始 ...
2026-06-04 很多数据分析师拿到数据就开始清洗、建模,但当被问到“这批数据属于什么类型——结构化还是非结构化?分类变量还是数值变量 ...
2026-06-04在问卷调查与社会科学数据分析中,卡方检验是最常用、最基础的非参数检验方法,广泛应用于市场调研、用户分析、行为统计、满意度 ...
2026-06-03【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-03