下面这段是随机生成50个服从N(100,25*25)的数据(单样本) 再对其作T检验与Wilcoxon符号秩检验, 要重复50次检验 并将每一次t检验产生的P值放在pvalue表中
%macro dyb50(k);
data wf.dzt50; /*生成50个服从均值为100方差为25的正态分布的随机数*/ /*单样本*/
do i=1 to 50; /* Do 50 times. ie. generate 50 random numbers */
x = 100 + 25*rannor(&k);
output ;
end;
run;
proc univariate alpha=0.05 mu0=100; /*T检验与Wilcoxon符号秩检验同时检验*/
var x;
output out=wf.p1 probt=probt; /*将1个ttest的P值输入p1表中*/
run;
data wf.pvalue1 ;
set wf.pvalue1 wf.p1 ;
run;
%mend;
%macro allfmix; /*将50个ttest的P值输入pvalue1表中*/
data wf.pvalue1; set _null_; run;
%do i=1 %to 50;
%dyb50(&i);
%end;
%mend;
%allfmix;
这一段的问题是t检验产生的50个P值放在pvalue1表中已经解决了,那若Wilcoxon符号秩检验产生的50个P值要放在另一个表pvalue2中要怎么添加进去呢??试过好多次都出错啊 ~~~~~~~~
下面这段是把上面的单样本改成两样本,但是如果变成两样本了 怎么调用宏来做重复50次的检验啊,而且为什么不能像上面那样用univariate同时做T检验与Wilcoxon符号秩检验啊?另外还是要把2中检验得到的P值放在2个表中又该怎么弄啊???
data wf.lzt50;/*生成50个服从均值为100方差为25的正态分布的2组随机数*/ /*两样本*/
do i=1 to 100; /* Do 100 times. ie. generate 100 random numbers */
if i<51 then group="one";
else group="two";
x = 100 + 25*rannor(0);
output ;
end;
run;
proc ttest data= wf.lzt50 alpha=0.05 ;
CLASS group;
Var x ;
run;
proc Npar1way data= wf.lzt50 wilcoxon;
CLASS group;
Var x;
Exact wilcoxon;
run;
纠结。。。。。。