全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4418 5
2013-12-11
proc rank normal=blom data=new;
ranks residr;
var resid;
run;这段指令什么意思啊,初学。。求大神指教

二维码

扫码加我 拉你入群

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

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

全部回复
2013-12-11 11:22:31
对变量resid进行排序,排序的结果变量residr服从正态分布。
二维码

扫码加我 拉你入群

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

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

2013-12-11 23:04:13
这是我以前找到的关于proc rank过程的详细解释,出处忘了是哪儿了,就在网上搜了一下,看内容跟我看过得差不多,就直接贴过来了,特别强调此处是引用的,相信能够帮到你,嘿嘿,
proc rank 其实最主要的是掌握那几个选项,该proc 的整体语法结构如下:
           proc rank <选项>;
                var 变量;
                ranks 新变量名字;
                by 分组变量;
           run;
这是一个整体的语法结构,举例,比如说我要对sashelp中的height排名次:
          proc rank data=sashelp.class out=result;
               var height;
          run;
很显然就是这样写,用var来指定要排名次的变量,但是你运行该程序后会发现一个问题,就是原来的height的值都被名次代替了。如果我想保留原来的height值,那就需要用ranks语句了:
         proc rank data=sashelp.class out=result;
              var height;
              ranks r_height;
         run;
这样原来的height变量就不会动,生成名次变量r_height,这就是ranks的作用。
接着讲选项,排名次默认的方法是从小排到大的,那你如果需要从大到小来排,你就需要在选项proc rank <选项>;制定,比如说我要对sashelp的升高按照从大到小排名次,那么程序如下:
        proc rank data=sashelp.class out=result descending;
             var height;
             ranks r_height;
        run;
接着再讲相同值名次怎么算,比如说45 68 68 9,这四个数字从小到大排名次,sas默认拍出来的结果是
4 2.5 2.5 1 也就是相同值得话,名次怎么排,就是把相同的值得名次相加作平均。4 5 5 5 6 排名次的结果应该是 1 3 3 3 5 这些明白 ?OK? 继续
那么还有一种相同值的名次处理方法,刚才那种取名次均值得方法 叫做mean
       proc rank data=sashelp.class out=result descending;
            var height;
            ranks r_height;
       run;
                等价
proc rank data=sashelp.class out=result descending ties=mean;
var height;
ranks r_height;
run;
也就是说sas默认相同值得名次用均值名次处理,然而sas还提供了另外两种处理方法:
一种就是去小的那个名次,举例子:4 5 5 5 6 排名次的结果应该是 1 2 2 2 5
       proc rank data=sashelp.class out=result descending ties=low;
            var height;
            ranks r_height;
       run;
另外一种就是取大的那个名次,4 5 5 5 6 排名次的结果应该是 1 4 4 4 5
      proc rank data=sashelp.class out=result descending ties=high;
           var height;
           ranks r_height;
      run;
所以可以通过制定ties=选项值 来让sas知道如何去处理相同值的名次
接着讲一个选项,名次用分数来表示,用排到的名次除以总人数,来作为rank的值。这时候就需要各选项fraction,用这个选项的时候一定要注意,如果你没有用ties=选项,那么sas默认的不再用均值处理名次
而是用最大的那种方法
     proc rank data=sashelp.class out=result descending ties=mean fraction;
          var height;
          ranks r_height;
     run;
这里拍出的rank实际上就是名次/总人数,这里的ties=mean不能身略,如果身略,那么sas默认ties=high
所以这里要注意。
NPLUS1 这个选项类同于fraction,前者除以(总人数+1) k/(n+1),后者处以(总人数) k/n
还有你把除出来的值进行百分比,也就是说你要再乘以100,那么就用percent选项。
     proc rank data=sashelp.class out=result descending ties=mean percent;
          var height;
          ranks r_height;
     run;
     proc rank data=sashelp.class out=result descending ties=mean fraction;
          var height;
          ranks r_height;
    run;
前者是k/n*100 ,后者是k/n  仅此区别而已。
接着再讲一个分组选项,有点份为数的意思,1 2 3 4 5 6 分成两组,首先从小到大或从大到小排列,然后均分成2组:
     proc rank data=sashelp.class out=result descending ties=mean groups=2;
          var height;
          ranks r_height;
     run;
groups=是用来指定分成几组,这里不是随机分组,是按照顺序以后的分组,也就是说排好名次后按名次顺序分组
最后还剩下2个选项,一个选项是normal= 貌似将名次再正态化,有三种正态化方法 blom 、 tukey 、vw 这三种方法统计上怎么去正态化名次,公式分别是什么,请参照帮助。
最后一个选项SAVAGE ,就是对名次进行指数分布,公式参见帮助。

二维码

扫码加我 拉你入群

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

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

2013-12-12 08:34:22
是风啊 发表于 2013-12-11 23:04
这是我以前找到的关于proc rank过程的详细解释,出处忘了是哪儿了,就在网上搜了一下,看内容跟我看过得差不 ...
论坛好人多!谢谢!
二维码

扫码加我 拉你入群

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

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

2016-6-15 19:25:05
优秀,完全秒懂
二维码

扫码加我 拉你入群

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

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

2016-11-16 17:33:45
学习了。谢谢
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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