/***************************************************** SAS -- LOGISTIC REGRESSION PROCS: PROC LOGISTIC PROC GENMOD FILENAME: LOGISTIC.SAS ******************************************************/ OPTIONS NODATE FORMDLIM=" " PAGENO=1; DATA WERNER; INFILE "c:\temp\labdata\werner2.dat"; INPUT ID $ 1-4 AGE 5-8 HT 9-12 WT 13-16 PILL 17-20 CHOL 21-24 ALB 25-28 1 CALC 29-32 1 URIC 33-36 1 ; IF HT = 999 THEN HT = .; IF WT = 999 THEN WT = .; IF ALB = 99 THEN ALB = .; IF CALC = 99 THEN CALC = .; IF URIC = 99 THEN URIC = .; /*SET WEIRD VALUES FOR CHOLESTEROL TO MISSING*/ IF CHOL GE 400 OR CHOL LE 50 THEN CHOL = . ; /*AGEGRP VARIABLE*/ IF AGE NOT = . THEN DO; IF AGE GE 0 AND AGE LT 25 THEN AGEGRP=1; IF AGE GE 25 AND AGE LT 32 THEN AGEGRP=2; IF AGE GE 32 AND AGE LT 42 THEN AGEGRP=3; IF AGE GE 42 THEN AGEGRP=4; END; /*75TH PERCENTILE ON CHOLESTEROL*/ IF CHOL NE . THEN HICHOL = (CHOL >= 260); /*CREATE A PILL DUMMY: 0=NOPILL 1=PILL*/ PILLDUM = PILL - 1.0; RUN; *******************DESCRIPTIVE STATISTICS; PROC MEANS; TITLE "DESCRIPTIVE STATISTICS"; RUN; *******************LOGISTIC REGRESSION WITH A CONTINUOUS PREDICTOR; PROC LOGISTIC DATA=WERNER DESCENDING; MODEL HICHOL = URIC/ RL CL RSQUARE; OUTPUT OUT=OUTLOG1 P=PHAT; TITLE "LOGISTIC REGRESSION WITH 1 CONTINUOUS PREDICTOR"; RUN; *******************EXAMINE PREDICTED VALUES; PROC SORT DATA=OUTLOG1; BY URIC; RUN; PROC PRINT DATA=OUTLOG1 (OBS=30); VAR ID HICHOL URIC PHAT ; TITLE "PRINTOUT OF PREDICTED VALUES FROM THE NEW DATA SET"; RUN; PROC PRINT DATA=OUTLOG1 (FIRSTOBS=150 OBS=188); VAR ID HICHOL URIC PHAT ; TITLE "PRINTOUT OF MORE PREDICTED VALUES FROM THE NEW DATA SET"; RUN; PROC MEANS DATA=OUTLOG1; WHERE HICHOL NOT=. AND URIC NOT=.; VAR HICHOL PHAT; TITLE "COMPARE MEAN OF PREDICTED PROBABILITY WITH MEAN OF HICHOL"; RUN; ***********************CROSSTABS FOR AGEGROUP BY HIGH CHOLESTEROL; PROC FREQ DATA=WERNER; TABLES AGEGRP * HICHOL / CHISQ ; TITLE "USING AGEGROUP TO PREDICT HIGH CHOLESTEROL"; RUN; /*COMPARE SCORE TEST FROM PROC LOGISTIC TO PEARSON CHI-SQUARE FROM PROC FREQ. COMPARE LIKELIHOOD RATIO CHI-SQUARE FROM PROC LOGISTIC TO LIKELIHOOD RATIO CHI-SQUARE FROM PROC FREQ */ PROC LOGISTIC DATA=WERNER DESCENDING; CLASS AGEGRP ; MODEL HICHOL = AGEGRP / RSQUARE ; TITLE "DEFAULT IS EFFECT CODING--EACH GROUP COMPARED TO OVERALL MEAN"; RUN; PROC LOGISTIC DATA=WERNER DESCENDING; CLASS AGEGRP / PARAM=REF REF=FIRST ; MODEL HICHOL = AGEGRP / RSQUARE ; TITLE "AGEGRP IS A CLASS VARIABLE--REF GROUP IS FIRST"; RUN; PROC LOGISTIC DATA=WERNER DESCENDING; CLASS AGEGRP / PARAM=REF REF=LAST ; MODEL HICHOL = AGEGRP / RSQUARE ; TITLE "AGEGRP IS A CLASS VARIABLE--REF GROUP IS LAST"; RUN; PROC LOGISTIC DATA=WERNER DESCENDING; CLASS AGEGRP (REF="2") / PARAM=REF ; MODEL HICHOL = AGEGRP / RSQUARE ; TITLE "AGEGRP IS A CLASS VARIABLE--SPECIFY ANOTHER REFERENCE GROUP"; RUN; *******************CATEGORICAL VARIABLE AND CONTINUOUS VARIABLE; PROC LOGISTIC DATA=WERNER DESCENDING; CLASS AGEGRP / PARAM=REF REF=FIRST; MODEL HICHOL = URIC AGEGRP / RSQUARE ; TITLE "MODEL WITH CALCIUM AND AGEGRP BOTH INCLUDED"; RUN; *************************TRY AGE AND AGE-SQUARED IN THE MODEL; PROC LOGISTIC DATA=WERNER DESCENDING; MODEL HICHOL = URIC AGE AGE*AGE ; TITLE "TRY CONTINUOUS AGE AND AGE-SQUARED IN THE MODEL"; RUN; **************************CENTER AGE, SO IT HAS MEAN=0; PROC STANDARD DATA=WERNER MEAN=0 OUT=STDDATA; VAR AGE; RUN; PROC LOGISTIC DATA=STDDATA DESCENDING; MODEL HICHOL = URIC AGE AGE*AGE ; TITLE "TRY AGE-SQUARED IN THE MODEL WITH AGE CENTERED"; RUN; ********************STEPWISE LOGISTIC REGRESSION; PROC LOGISTIC DATA=WERNER DESCENDING; MODEL HICHOL = AGE CALC URIC HT WT PILL ALB/ RSQUARE SELECTION=STEPWISE DETAILS INCLUDE=1; TITLE "STEPWISE SELECTION"; RUN; *******************USING PROC GENMOD FOR LOGISTIC REGRESSION--GET LR CHISQUARE; PROC GENMOD DATA=WERNER DESCENDING; CLASS AGEGRP; MODEL HICHOL = URIC AGEGRP/ TYPE3 DIST=BIN ; TITLE "LOGISTIC REGRESSION USING PROC GENMOD WITH DESCENDING OPTION"; TITLE "NOTE: REF GROUP FOR CLASS VARIABLES IS LAST, BY DEFAULT"; RUN; PROC GENMOD DATA=WERNER DESCENDING; CLASS AGEGRP(REF="2") / PARAM=REF; MODEL HICHOL = URIC AGEGRP/ TYPE3 DIST=BIN ; TITLE "LOGISTIC REGRESSION USING PROC GENMOD WITH DESCENDING OPTION"; TITLE "NOTE: REF GROUP IS GROUP 2"; RUN;