* Output options: all can be turned on/off by adding or removing the 'NO': page number, date, centering, or page breaks, page length and width; OPTIONS Spool NOnumber NOdate NOcenter FormDlim=' ' PageSize=MAX LineSize=120; * Eliminate SAS default titles and names of tables in output (TRACE ON to show); TITLE; ODS TRACE OFF; * Enter data from normal distribution example; DATA Normal_Data; INPUT Normal_Y; DATALINES; 1.0 2.1 3.0 4.3 4.6 6.2 7.3 7.6 7.8 8.0 ; RUN; TITLE "Duplicating Excel NORMDIST Results in PROC MIXED"; PROC MIXED DATA=Normal_Data COVTEST IC METHOD=ML; MODEL Normal_Y = / SOLUTION; * MODEL y = predictors; RUN; TITLE; TITLE1 "Duplicating Excel NORMDIST Results in PROC GLIMMIX"; TITLE2 "LINK and DIST default to GLM, as shown here"; PROC GLIMMIX DATA=Normal_Data METHOD=QUAD; MODEL Normal_Y = / SOLUTION LINK=IDENTITY DIST=NORMAL; ESTIMATE "Intercept" intercept 1 / ILINK; * ILINK= transform to data scale; RUN; TITLE1; TITLE2; * Enter data from binary distribution example; DATA Binary_Data; INPUT Binary_Y; DATALINES; 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 ; RUN; TITLE1 "Duplicating Excel Binary Results in PROC GLIMMIX"; TITLE2 "DESCENDING predicts y=1, LINK and DIST for binary data"; PROC GLIMMIX DATA=Binary_Data METHOD=QUAD; MODEL Binary_Y (DESCENDING) = / SOLUTION LINK=LOGIT DIST=BINARY; ESTIMATE "Intercept" intercept 1 / ILINK; * ILINK= transform to data scale; RUN; TITLE1; TITLE2; * Enter data from binary distribution example; DATA Binomial_Data; INPUT Binomial_Y Ntrials; DATALINES; 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 10 10 ; RUN; TITLE1 "Duplicating Excel Binomial Results in PROC GLIMMIX"; TITLE2 "Predict events/trials for binomial outcome"; PROC GLIMMIX DATA=Binomial_Data METHOD=QUAD; MODEL Binomial_Y/Ntrials = / SOLUTION LINK=LOGIT DIST=BINOMIAL; ESTIMATE "Intercept" intercept 1 / ILINK; * ILINK= transform to data scale; RUN; TITLE1; TITLE2; * Simulating beta-distribution data; DATA Beta_Data; DO i=1 TO 1000; * Make 1000 fake people; CALL STREAMINIT(8675309); * Set random number seed for RAND functions; Beta11 = RAND("Beta", 1, 1); * Distribution, alpha, beta; Beta55 = RAND("Beta",.5,.5); Beta15 = RAND("Beta", 1,.5); Beta51 = RAND("Beta",.5, 1); OUTPUT; END; RUN; TITLE "Beta Distributions"; PROC UNIVARIATE NOPRINT DATA=Beta_Data; VAR Beta11 Beta55 Beta15 Beta51; HISTOGRAM Beta11 Beta55 Beta15 Beta51 / BETA(ALPHA=est BETA=est); INSET BETA / FORMAT=6.3 POS=NW; RUN; QUIT; TITLE; * Macro to repeat process 4 times; %MACRO RunBeta(DV); TITLE "Finding &DV. Results in PROC GLIMMIX"; PROC GLIMMIX DATA=Beta_Data METHOD=QUAD; MODEL &DV. = / SOLUTION LINK=LOGIT DIST=BETA; ESTIMATE "Intercept" intercept 1 / ILINK; RUN; TITLE; %MEND RunBeta; * Execute macro, each time filling in this variable; %RunBeta(DV=Beta11); %RunBeta(DV=Beta55); %RunBeta(DV=Beta15); %RunBeta(DV=Beta51);