在SAS EG里跑回归 跑2-6个自变量还正常 但是跑2-8个自变量就提示内存不足了
但是把2-6和7-8分两段跑也提示内存不足
代码如下,请教一下大家如何修改代码才能避免该问题
在SAS EG里不知道怎么调内存memsize
%let para=¶2;
%let num=&num_para2;
%let ecodata=sas66.eco_his_season;
%macro paracorr(name,ecodata,para,num,corr);
proc corr
data=&ecodata
out=work.corr;
var ¶
run;
data work.corr1;
set work.corr;
if _TYPE_ ne 'CORR' then delete;
%do i=1 %to #
%let p=%scan(¶,&i);
if &p>&corr and &p<1 then &p=0;
else &p=1;
%end;
run;
%mend;
%paracorr(M1,sas66.eco_his_season,¶,&num,0.85);
%macro mreg(name,para,num,min_num,max_num);
%local x;
%let x1=%scan(¶,1);
%let x=x1;
%do i=2 %to #
%let x&i=%scan(¶,&i);
%let x=&x,x&i;
%end;
/*%put x=&x;*/
proc reg data=work.&name outest=work.&name.test;
%do j=&min_num %to &max_num;
%let ncomb=%sysfunc(comb(&num,&j));
%do k=1 %to &ncomb;
%syscall allcomb(k, j, &x);
%let regpara= ;
%do m=1 %to &j;
%let regpara=%str(®para &&x&m);
%end;
reg1:model logit&name=®para
;
/*
%put regpara &j &k: ®para sysinfo=&sysinfo syserr=&syserr;
*/
%end;
%end;
run;
quit;
%mend mreg;
%macro mreg_33(name,para,num,min_num,max_num);
%local x y;
%let x1=%scan(¶,1);
%let y1=0;
%let x=x1;
%let y=y1;
%let y_num=1;
%do i=2 %to #
%let x&i=%scan(¶,&i);
%let x=&x,x&i;
%end;
proc reg data=work.&name outest=work.&name.test;
%do j=&min_num %to &max_num;
%do %while( &y_num<&j);
%let y_num=%eval(&y_num+1);
/*%put y_num=&y_num j=&j;*/
%let y&y_num=0;
%let y=&y,y&y_num;
%end;
%let ncomb=%sysfunc(comb(&num,&j));
%let y1=0;
%do k=1 %to &ncomb;
%syscall allcombi(num, j, &y);
/*%put y=&y;*/
%let regpara= ;
%do m=1 %to &j;
%let ym=&&y&m;
%let regpara=%str(®para &&x&ym);
%end;
reg1:model logit&name=®para
;
/*%put regpara &j &k: ®para sysinfo=&sysinfo syserr=&syserr;
*/
%end;
%end;
run;
quit;
%mend mreg_33;
*%mreg_33(lgdcorp,&newpara,&num_newpara,1,5);
%mreg(M1,¶,&num,2,7);