全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4507 5
2012-11-18
要判断生成的数据集是否满足正态性,如果不满足正态,重新进入下一个循环:

%macro produce(seed00,miu,sigma2);

前面是种子数据集的过程;

%do nn=1 %to 10;

data data&nn;
set seed&nn;
retain seed;
do j=1 to 30;
x=&miu+normal(seed)*sqrt(&sigma2);
group=1;
output;end;
keep x group;
ods output TestsForNormality=Test&nn(where=(Test="Shapiro-Wilk"));
proc univariate data=data&nn normal;
var x;
run;

data datapb&nn;
set Test&nn;
keep pvalue;
if pvalue<0.05 then leave;
run;

其他过程;

%end;
%mend;

请教我现在用if pvalue<0.05 then leave;都没办法跳出当前的循环,应该怎么样才能使它不满足正态性的话就进入下一循环重新产生新数据集呢?

二维码

扫码加我 拉你入群

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

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

全部回复
2012-11-18 15:34:35
宏就是进行程序控制的,你可以这样做,在data步将pvalue赋给宏变量
call symput("p",pvalue);
然后你要控制下面的程序,如果p<0.05就进行下面的程序就行了,%if &p<0.05 %then %do; ........ %end;
                                                                                          
二维码

扫码加我 拉你入群

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

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

2012-11-18 21:17:08
Imasasor 发表于 2012-11-18 15:34
宏就是进行程序控制的,你可以这样做,在data步将pvalue赋给宏变量
call symput("p",pvalue);
然后你要控 ...
谢谢,不过我里面有几个样本,所以合并的样本集需要对每一个样本都做正态性检验,这样的话不止一个p,symput好像只能保留最后一个p?
二维码

扫码加我 拉你入群

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

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

2012-11-18 21:58:34
Here is a prototype to exit a loop in a macro.

%macro leaveloop(n);
   %let L=0;
   %let CHKPTV=0.8;
   %let I=0;
   %do  %until(L=1);
      %let I=%eval(&i+1);
      data _null_;
             if ( ranuni(0)- &CHKPTV)>0 or &i-&n=0 then call symputx('L', 1);
          run;
          %put >>>>&i &L &n<<<<;
          %if "&L"="1" %then %goto exit;
        %end;

       
        %exit:

        %mend;

        %leaveloop(5);
二维码

扫码加我 拉你入群

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

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

2012-11-18 22:03:50
不错谢谢
二维码

扫码加我 拉你入群

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

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

2012-11-19 09:15:35
受到Imasasor的启发,后来用了 call symput来解决了。谢谢大家!


count=0;

data datapb&nn;
set Test_one&nn test_two&nn;
IF PVALUE>0.05 then count+1;
call symput("count",count);
run;

data data&nn;
if &count>=2 then set dataone&nn datatwo&nn;
run;

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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