全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4464 10
2010-11-12
我用了这样一个macro rank,
%macro decile(dsn,var,decilevar);

/* calculate the cutpoints for the quintiles */
proc univariate noprint data=&dsn;
  var &var;
  output out=decile pctlpts=10 20 30 40 50 60 70 80 90 pctlpre=pct;
run;


/* write the quintiles to macro variables */
data _null_;
set decile;
call symput('q1',pct10) ;
call symput('q2',pct20) ;
call symput('q3',pct30) ;
call symput('q4',pct40) ;
call symput('q5',pct50) ;
call symput('q6',pct60) ;
call symput('q7',pct70) ;
call symput('q8',pct80) ;
call symput('q9',pct90) ;
run;

/* create the new variable in the main dataset */
data &dsn;
set &dsn;
       if &var =. then &decilevar = .;
  else if &var le &q1 then &decilevar=0.1;
  else if &var le &q2 then &decilevar=0.2;
  else if &var le &q3 then &decilevar=0.3;
  else if &var le &q4 then &decilevar=0.4;
  else if &var le &q5 then &decilevar=0.5;
  else if &var le &q6 then &decilevar=0.6;
  else if &var le &q7 then &decilevar=0.7;
  else if &var le &q8 then &decilevar=0.8;
  else if &var le &q9 then &decilevar=0.9;
  else &decilevar=1;
run;

%mend decile;
-------------------------------------------------
我感觉最后rank 打分出来应该是小于等于0.5的obs个数,和0.5 到1的样本个数是差不多的。
但是为什么在0.5的两端样本个数差别好大啊。这是为什么呢?一个边是5000左右,一边是15000左右


-----------------------------

对全样本做了个proc means; var rank;发现median也不是5.5. 是不是用proc univariate rank,本身就容易有问题?还是我哪里出了问题?
The MEANS Procedure

                             Analysis Variable : rank

                  Mean          Median         Maximum         Minimum         Std Dev
          ----------------------------------------------------------------------------
             0.5499870       0.6000000       1.0000000       0.1000000       0.2872285
二维码

扫码加我 拉你入群

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

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

全部回复
2010-11-12 04:15:02
难道我rank的方法错了?
二维码

扫码加我 拉你入群

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

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

2010-11-12 07:13:54
程序没有问题啊。我猜原因是重复值很多。比如说,pct10 = pct20. 从你的程序来讲,pct20就没有对应的分数值了。因此排序的中值向左(?)移动。
二维码

扫码加我 拉你入群

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

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

2010-11-12 09:22:20
不知道你什么原因,只发部分程序上来,也许你计算0.5左右的个数的时候出错了。
二维码

扫码加我 拉你入群

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

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

2010-11-12 10:21:18
liudeng2005 发表于 2010-11-12 09:22
不知道你什么原因,只发部分程序上来,也许你计算0.5左右的个数的时候出错了。
这已经是全部程序了饿。。。我就差把数据发上来了,那太大了。

直接放个dsn进去,就能run了的。

好像说说proc univariate有问题。
也有可能是京剧大师说的问题。
二维码

扫码加我 拉你入群

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

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

2010-11-12 12:00:45
我感觉不会,3倍的差距,统计学上都不可能吧
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群