全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2663 4
2013-02-24
下面这段是随机生成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;


纠结。。。。。。


二维码

扫码加我 拉你入群

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

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

全部回复
2013-2-24 21:05:24
啊,我不是学经济的,完全看不懂这是啥意思...
二维码

扫码加我 拉你入群

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

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

2013-2-25 07:46:44
The following code works except a warning message.
WARNING: Computing exact p-values for this problem may require much time and memory. Press the
         system interrupt key to terminate exact computations.

The results of PROC TTest and PROC Npar1way are output into 4 datasets. You need to select what you need from the datasets.

%macro Mtest;
data lzt50;   /* generate sample of 50 random normal distributed number with mean=100 and ss =25 */
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= lzt50 alpha=0.05;
CLASS group;
Var x ;
     ods output statistics = STResult;
     ods output TTests   = TTResult;
     ods output Equality  = EqResult;
run;

data SSTResult;
    set SSTResult  STResult;
run;

proc  Npar1way data= lzt50 wilcoxon;
CLASS group;
Var x;
Exact wilcoxon;
output out = NPResult;         
run;

%mend Mtest;

%macro Mtest2;
   %do i = 1 %to 2;
       %Mtest;
   %end;
%mend Mtest2;
%Mtest2;
二维码

扫码加我 拉你入群

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

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

2013-2-27 18:21:28
yongyitian 发表于 2013-2-25 07:46
The following code works except a warning message.
WARNING: Computing exact p-values for this probl ...
运行出来不对啊   我想要的是一个表中只有检验得到的P值一项数据
。。。。额
二维码

扫码加我 拉你入群

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

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

2013-2-28 09:59:56
All the results are in the four output files.
You need to use data step to find which p-value you want. such as:
data p_value;
    set ttresult(keep=p_you_want);
run;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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