我是SAS的新用户。希望你能帮我。例如,我有一个包含35个分类变量的数据集。cat1 cat2 cat3 cat4 ... cat35
我想创建一个表,包含两个分类变量的所有可能组合之间的独立性检验结果及其p值。
我用了proc freq
,但是我只能手工做,一次两个变量。为了节省时间,我在考虑使用宏,但是我不知道怎么做。
输出是一个表Variable1 | Variable2 | P-value
----------------------------------------------
cat1 | cat2 | p-value of cat1 & cat2
cat1 | cat3 | p-value of cat1 & cat3
...
cat34 | cat35 | p-value of cat34 & cat35
开放征求意见。谢谢!
Edit:我当前的代码是proc freq data = mydata; tables cat1*cat2 / chisq; output out=myoutput pchi cramv; run;
proc sql; create table myoutput as select "cat1" as X, "cat2" as Y, P_PCHI from myoutput; quit;
这将给出一个表格X | Y | P-value
-----------------------------------
cat1 | cat2 | p-value of cat1 & cat2
我认为你应该能够做到这一点,使用以下语法的表语句在你的进程频率调用:
tables (cat1-cat35) * (cat1-cat35);
我已经调整了您的代码以捕获SAS数据集中所需的输出:
data example;
do cat1 = 'a','b','c';
do cat2 = 'd','e','f';
do cat3 = 'g','h','i';
output;
end;
end;
end;
run;
ods output chisq = mychisq(where = (statistic = 'Chi-Square'));
proc freq data = example;
tables (cat1-cat3) * (cat1-cat3) / chisq;
output out=myoutput pchi cramv;
run;
这将以一种稍微不同的格式输出,但是您应该能够从中进行排序。
循环遍历所有对的一种方法是执行
do i=1 to 34;
do j=i+1 to 35;
.....