SAS独立测试环路



我是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;
       .....

最新更新