计算字符型变量的信息熵——macro
发布:intheangel | 分类:考研
关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
获取电子版《CDA一级教材》
完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。
期刊
- 期刊库 | 马上cssci就要更新 ...
- 期刊库 | 【独家发布】《财 ...
- 期刊库 | 【独家发布】“我 ...
- 期刊库 | 【独家发布】“我 ...
- 期刊库 | 【独家发布】国家 ...
- 期刊库 | 请问Management S ...
- 期刊库 | 英文期刊库
- 核心期刊 | 歧路彷徨:核心期 ...
TOP热门关键词
有空写了一个宏,可以直接计算字符型变量的信息熵;raw_data是原始数据集,destination是分类变量;关于数值型变量的信息熵算法有空继续;%macroentropy(row_data,destination);proccontentsdata=&row_data(drop= ...
坛友互助群![]() |
扫码加入各岗位、行业、专业交流群![]() |
raw_data是原始数据集,destination是分类变量;
关于数值型变量的信息熵算法有空继续;
- %macro entropy(row_data,destination);
- proc contents data=&row_data(drop=&destination) noprint out=var_list;run;
- data var_cha_list;
- set var_list;
- where type=2;
- keep name;
- run;
- /*first we need to get the character variable which we can calculate the entropy*/
- %if %sysfunc(exist(var_cha_list)) ne 0 %then %do;
- proc datasets lib=work nolist;
- delete entropy_variable;
- quit;
- data entropy_variable;
- length variable $40 entropy 8;
- stop;
- run;
- %end;
- /*create the table entropy_variable to store the results*/
- %let dsid = %sysfunc(open(var_cha_list));
- %if &dsid gt 0 %then %do;
- %let nobs = %sysfunc(attrn(&dsid,nobs));
- %do i=1 %to &nobs;/*start resolve this question, get the answers*/
- %let rc = %sysfunc(fetch(&dsid,&i));
- %let varnume = %sysfunc(varnum(&dsid,name));
- %let variable = %sysfunc(getvarc(&dsid,&varnume));
- ods html close;
- ods output
- CrossTabFreqs=pro;
- proc freq data=&row_data;
- table &variable * &destination;
- run;
- ods output close;
- ods html;
- /*use the freq proc to summary the data we need*/
- data pro_temp(keep=&variable percent);
- set pro(keep=&variable percent &destination);
- where &destination='' and &variable^='';
- run;
- data pro_temp_2(keep=&variable rowpercent);
- set pro(keep=&variable rowpercent &destination);
- where &destination^='' and &variable^='';
- run;
- proc sql;
- create table final as
- select * from pro_temp as a
- inner join pro_temp_2 as b
- on a.&variable.=b.&variable.;
- quit;
- /*organize the data so we can use it directly*/
- data final;
- set final;
- retain entropy 0;
- if rowpercent^=0 and rowpercent^=100 then
- entropy=entropy+rowpercent/100*log2(rowpercent/100)*percent/100;
- else entropy=entropy;
- run;
- /*calculate the entropy*/
- data entropy_&variable(keep=variable entropy);
- retain variable;
- set final end=eof;
- variable="&variable";
- entropy=-entropy;
- if eof=1;
- run;
- proc append base=entropy_variable data=entropy_&variable force;run; /*get all the answer together*/
- %end;
- %let dsid = %sysfunc(close(&dsid));
- %end;
- /*Worte by Albert.feng , if you use this code please note.*/
- %mend entropy;
- %entropy(c,play_golf);
扫码或添加微信号:坛友素质互助


「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
您可能感兴趣的文章
本站推荐的文章
人气文章
1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。




