非常有用的sas程序,拿来即可用,从基本的数据整理到高级数据分析,应有尽有。
样例:
/*-------------------------------------------------------------------*/
/* Multiple Comparisons and Multiple Tests Using the SAS(r) System */
/* */
/* Program 2.4: Bonferroni and Sidak Adjusted p-values Using the DATA Step */
data one;
input test pval @@;
bon_adjp = min(1,10*pval);
sid_adjp = 1 - (1-pval)**10;
datalines;
1 0.0911 2 0.8912
3 0.0001 4 0.5718
5 0.0132 6 0.9011
7 0.2012 8 0.0289
9 0.0498 10 0.0058
;
proc sort data=one out=one;
by pval;
proc print data=one;
run;
/* Program 2.5: Bonferroni and Sidak Adjusted p-values Using PROC MULTTEST */
data one; set one;
rename pval=raw_p;
drop bon_adjp sid_adjp;
proc multtest pdata=one bon sid out=outp;
proc sort data=outp out=outp;
by raw_p;
proc print data=outp;
run;
/* Program 2.6: Conservative Simultaneous Confidence Intervals with Multivariate Data */
data _null_;
call symput('bonalpha',0.05/9 );
call symput('sidalpha',1-(1-0.05)**(1/9));
data HusbWive;
input HusbQ1-HusbQ4 WifeQ1-WifeQ4 @@;
DiffQ1 = HusbQ1-WifeQ1;
DiffQ2 = HusbQ2-WifeQ2;
DiffQ3 = HusbQ3-WifeQ3;
DiffQ4 = HusbQ4-WifeQ4;
DiffQAvg = sum(of HusbQ1-HusbQ4)/4 - sum(of WifeQ1-WifeQ4)/4;
DiffComp = sum(of HusbQ1-HusbQ2)/2 - sum(of WifeQ1-WifeQ2)/2;
DiffPass = sum(of HusbQ3-HusbQ4)/2 - sum(of WifeQ3-WifeQ4)/2;
DiffFFP = sum(of HusbQ1 HusbQ3)/2 - sum(of WifeQ1 WifeQ3)/2;
DiffFFY = sum(of HusbQ2 HusbQ4)/2 - sum(of WifeQ2 WifeQ4)/2;
datalines;
2 3 5 5 4 4 5 5 5 5 4 4 4 5 5 5 4 5 5 5 4 4 5 5
4 3 4 4 4 5 5 5 3 3 5 5 4 4 5 5 3 3 4 5 3 3 4 4
3 4 4 4 4 3 5 4 4 4 5 5 3 4 5 5 4 5 5 5 4 4 5 4
4 4 3 3 3 4 4 4 4 4 5 5 4 5 5 5 5 5 4 4 5 5 5 5
4 4 4 4 4 4 5 5 4 3 5 5 4 4 4 4 4 4 5 5 4 4 5 5
3 3 4 5 3 4 4 4 4 5 4 4 5 5 5 5 5 5 5 5 4 5 4 4
5 5 4 4 3 4 4 4 4 4 4 4 5 3 4 4 4 4 4 4 5 3 4 4
4 4 4 4 4 5 4 4 3 4 5 5 2 5 5 5 5 3 5 5 3 4 5 5
5 5 3 3 4 3 5 5 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5
3 3 5 5 3 4 4 4 4 4 3 3 4 4 5 4 4 4 5 5 4 4 5 5
;
proc glm;
model HusbQ1-HusbQ4 WifeQ1-WifeQ4 = / nouni;
repeated Spouse 2, Question 4 identity;
run;
proc means alpha=0.05 n mean lclm uclm;
title "Unadjusted Confidence Intervals";
var DiffQ1-DiffQ4 DiffQAvg DiffComp DiffPass DiffFFP DiffFFY;
proc means alpha=&sidalpha n mean lclm uclm;
title "Simultaneous Sidak Intervals";
var DiffQ1-DiffQ4 DiffQAvg DiffComp DiffPass DiffFFP DiffFFY;
proc means alpha=&bonalpha n mean lclm uclm;
title "Simultaneous Bonferroni Intervals";
var DiffQ1-DiffQ4 DiffQAvg DiffComp DiffPass DiffFFP DiffFFY;
run;
/* Program 2.7: Multiple Tests with Multivariate Data */
proc means data=HusbWive n mean std prt;
title "Tests of Hypotheses With Husband/Wife Data";
var DiffQ1-DiffQ4 DiffQAvg DiffComp DiffPass DiffFFP DiffFFY;
run;
/* Program 2.8: HOLM Adjusted p-values Using PROC MULTTEST */
data one;
set one;
rename pval=raw_p;
drop bon_adjp sid_adjp;
proc multtest pdata=one bon stepbon out=outp;
proc sort data=outp out=outp;
by raw_p;
proc print data=outp;
run;
/* Program 2.9. Sidak-Holm Adjusted p-values Using PROC MULTTEST */
data one; set one;
rename pval=raw_p;
drop bon_adjp sid_adjp;
proc multtest pdata=one sid stepsid out=outp;
proc sort data=outp out=outp;
by raw_p;
proc print data=outp;
run;


雷达卡





京公网安备 11010802022788号







