📄 riditanalysis.sas
字号:
data all;/*根据频数表建立SAS数据集*/
do rank=1 to 4;/*等级变量为rank,组别变量为group*/
do group=1 to 2;
input f @@;
ff+f;sum+f;half=ff/2;
output;
end;
ff=0;
end;/*从以下数据的结构知:疗效越好,其Ridit值越大*/
cards;
49 24
31 35
5 16
15 25
;
run;
%macro ridit(group,rank);/*Ridit分析的宏程序,两个自由参
数group和rank*/
%do i=1 %to &group;
data a&i;set all; if group=&i then output a&i;
data b&i;set a&i;keep f;run;
%end;
data sum;set a&group; keep sum; if _n_=&rank then
output;run;
data b;set a&group;keep ff half;run;
%do i=1 %to &rank;
proc append base=sum1 data=sum;run;
%end;
data nn;set a&group;n=sum;keep n;if _n_=&rank then
delete;run;
data n;n=0;output;run;
proc append base=n data=nn;run;
data aa;merge b n sum1;keep half n sum ;run;
data bb;set aa;r=sum(half,n)/sum;keep r;run;
%do i=1 %to &group;
data f&i;merge b&i bb;run;
proc means data=f&i n mean stderr noprint;var r;freq
f;output out=m&i mean=mean&i n=n&i stderr=stderr&i;run;
%end;
%mend ridit;
%ridit(2,4);
data mm;merge m1 m2;u=abs(mean1-mean2)/sqrt
(stderr1**2+stderr2**2);
if u>2.58 then p='<0.01';else if u>=1.96 then
p='<=0.05';else p='>0.05';run;
proc print data=mm;
var n1 n2 mean1 mean2 stderr1 stderr2 u p;run;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -