全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3108 10
2014-01-08
data a;
do group="1","2","3";
    do response=1 to 5
            input f@@;
            output;
    end;
        cards;
2         2         1         20         5
1         7         5         10         7
11         9         1         4         5
;
run;
ods html;
proc freq data=a;
order=data;
tables group*response;
exact jt;
weight f;
run;
ods html close;


二维码

扫码加我 拉你入群

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

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

全部回复
2014-1-8 20:49:14

补充说明  自变量就三个水平,分别为1  2  3 组;因变量分为:完全不,稍微,中等,较为,非常5个等级,
数据格式如下:
       全无      稍微   中等    较为   非常
1:  2 人           2人             1人         20人         5 人
2:  1                7                5         10         7  
3:  11              9                1          4          5
  
二维码

扫码加我 拉你入群

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

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

2014-1-8 22:17:31
%let group=3;
%let rank=5;
%let col_row=%eval(&group*&rank);
DATA _NULL_;
row=&rank;
col=&group;
ARRAY num(&rank,&group);
ARRAY cpd(&group);
ARRAY ridit(&group);
ARRAY trow(&rank);
ARRAY tcol(&group);
ARRAY y(&rank);
ARRAY ucpd(&group);
ARRAY uridit(&group);
ARRAY t(&group);
FILE PRINT;
n=0;     buf1=0;
buf4=0;  buf5=0;
INPUT num1-num&col_row;
DO j=1 TO col;
  tcol(j)=0;
  DO i=1 TO row;
   tcol(j)=tcol(j)+num(i,j);
  END;
n=n+tcol(j);
END;
buf3=n;
DO i=1 TO row;
trow(i)=0;
DO j=1 TO col;
  trow(i)=trow(i)+num(i,j);
END;
buf4=buf4+trow(i)*trow(i)*trow(i);
buf2=trow(i);
y(i)=buf3-buf1-buf2;
buf3=y(i);
buf1=trow(i);
END;
DO j=1 TO col;
cpd(j)=0;
DO i=1 TO row;
  cpd(j)=cpd(j)+num(i,j)*y(i);
END;
ridit(j)=0.5-cpd(j)/(2*tcol(j)*n);
t(j)=tcol(j)*(n+1)/2-cpd(j)/2;
  ucpd(j)=cpd(j)/sqrt(tcol(j)*(n-tcol(j))*(n*n*n-buf4)/(3*n*(n-1)));
  uridit(j)=(0.5-ridit(j))/sqrt((n*n*n-buf4)/(12*n*n*(n-1)*tcol(j)));
  buf5=buf5+t(j)*t(j)/tcol(j);  END;
Hc=(12/(n*(n+1))*buf5-3*(n+1))/(1-(buf4-n)/(n*(n*n-1)));
prob_Hc=1-PROBCHI(Hc,col-1);
PUT @27 "Kruskal-Wallis's Test"
     #3 @19 'Adjusted Chi-Square(Hc)' @49 'Prob>Hc'
     #4 @25 Hc 10.4 @50 prob_Hc 6.4;
PUT #7 @25 'Result of CPD and RIDIT Analysis'
     #9 @6 'CPD Values' @20 "CPD's U-Values"
        @40 'RIDIT Values' @60 "RIDIT's U-Values";
DO j=1 TO col;
  PUT #(j+9) @6  cpd(j)   7.4  @22 ucpd(j) 8.4
             @43 ridit(j) 7.4  @62 uridit(j) 8.4;
END;
buf1=probit(0.05/2/col);  buf2=-buf1;
buf3=probit(0.05/2);      buf4=-buf3;
PUT #(col+10) @6 "ALPHA= 0.05   CPD's Critical U-Values"
               @56 buf1 7.4 @68 buf2 7.4;
PUT #(col+11) @6 "              RIDIT's Critical U-Values"
               @56 buf3 7.4 @68 buf4 7.4;
buf1=probit(0.01/2/col);  buf2=-buf1;
buf3=probit(0.01/2);      buf4=-buf3;
PUT #(col+12) @6 "ALPHA= 0.01   CPD's Critical U-values"
               @56 buf1 7.4 @68 buf2 7.4;
PUT #(col+13) @6 "              RIDIT's Critical U-Values"
               @56 buf3 7.4 @68 buf4 7.4;
CARDS;
5  7  5
20 10 4
1 5 1
2 7 9
2 1 11
;
RUN;
二维码

扫码加我 拉你入群

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

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

2014-1-8 22:20:38
这个资料应是单向有序资料的RIDIT分析吧,或者CPD分析也可以,我把你的数据倒了一下,先入的后面的。不知道对不对。
结果如下图:
2014-01-08_222104.png
二维码

扫码加我 拉你入群

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

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

2014-1-9 00:04:51
shenweis 发表于 2014-1-8 22:20
这个资料应是单向有序资料的RIDIT分析吧,或者CPD分析也可以,我把你的数据倒了一下,先入的后面的。不知道 ...
太感谢啦  请问能不能加下QQ   有不明白的问题还想跟你请教   一共有六组数据的话  要怎么改程序  感觉看的不是很明白   多谢你。我的QQ835553293   如果不打扰的话 能不能加我一下 。
二维码

扫码加我 拉你入群

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

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

2014-1-9 00:09:33
shenweis 发表于 2014-1-8 22:20
这个资料应是单向有序资料的RIDIT分析吧,或者CPD分析也可以,我把你的数据倒了一下,先入的后面的。不知道 ...
只改CARDS下面的数据就好了吗
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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