刚刚入门sas,可能写的稍微有些麻烦,大家有意见也可以提出来帮忙指正哈~
- /*生成空的数据集记录结果*/
- %macro blank(observe);
- %data blankseed;
- varname='blank ';
- data blank;
- set blankseed;
- run;
- %do b=1 %to %eval(&observe-1);
- data blank;
- set blank blankseed;
- run;
- %end;
- run;
- %mend;
- %blank(1)
- data logit_univariate_pe; set blank; run;
- data logit_univariate_or; set blank; run;
- /*1定量 2定性*/
- %macro logit1(dataset= ,var= ,y= );
- ods html close;
- ods output ParameterEstimates=pe OddsRatios=or;
- proc logistic data=&dataset desc;
- model &y=&var;
- run;
- ods html;
- data logit_univariate_pe; set logit_univariate_pe pe; if Variable='Intercept' then delete; run;
- data logit_univariate_or; set logit_univariate_or or; run;
- %mend;
- %macro logit2(dataset= ,var= ,y= ,ref= );
- ods html close;
- ods output parameterestimates=pe OddsRatios=or;
- proc logistic data=&dataset desc;
- class &var(param=ref ref="&ref");
- model &y=&var;
- run;
- ods html;
- data logit_univariate_pe; set logit_univariate_pe pe; if Variable='Intercept' then delete; run;
- data logit_univariate_or; set logit_univariate_or or; run;
- %mend;
- /*调用宏进行分析*/
- /*%logit1(dataset=test,var=x, y=y)*/
- /*对最终输出结果进行整理*/
- data logit_univariate;
- merge logit_univariate_pe logit_univariate_or;
- if probchisq=. then delete;
- keep variable classval0 estimate waldchisq probchisq oddsratioest lowercl uppercl;
- run;