/************************************************* SAS EXAMPLE 1: ONE-SAMPLE, PAIRED AND INDEPENDENT SAMPLE TTESTS NON-PARAMETRIC TESTS FILENAME: TTEST.SAS *************************************************/ TITLE "SAS EXAMPLE 1:"; OPTIONS PAGENO=1 LABEL; /*CREATE FORMATS FOR PILL AND HIBMI*/ /*FORMATS WILL BE USED LATER IN PROCEDURES*/ PROC FORMAT; VALUE PILLFMT 1="1:NO PILL" 2="2:YES PILL"; VALUE BMIFMT 0="0:LOW BMI" 1="1:HI BMI"; RUN; /*READ IN WERNER DATA*/ 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 CALC 29-32 URIC 33-36 PAIR 37-39; /*Set up Missing Values First*/ 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 = .; IF CHOL > 400 then CHOL = .; /*Calculate New Variables*/ WTKG = WT*.39; HTCM = HT*2.54; BMI = WTKG/(HTCM/100)**2; LOGBMI = LOG(BMI); CHOL_225 = CHOL-225; /*Create Dummy Variables*/ IF BMI > 20 then HIBMI = 1; IF BMI <= 20 then HIBMI = 0; IF BMI = . then HIBMI = .; /*Drop Unneeded Variables*/ DROP WTKG HTCM; RUN; PROC MEANS DATA=WERNER; TITLE2 "CHECK DESCRIPTIVE STATISTICS"; TITLE3 "NOTE EQUAL SAMPLE SIZE FOR BMI AND HIBMI"; RUN; PROC FREQ DATA=WERNER; TABLES PILL HIBMI; FORMAT BMI 10.2 PILL PILLFMT. HIBMI BMIFMT. ; TITLE2 "CHECK FREQUENCIES"; RUN; /*DESCRIPTIVE STATISTICS USING A CLASS STATEMENT*/ PROC MEANS DATA=WERNER MAXDEC=3; CLASS PILL; FORMAT PILL PILLFMT.; TITLE2 "DESCRIPTIVE STATISTICS USING THE CLASS STATEMENT"; RUN; /*DESCRIPTIVES BY GROUP USING PROC SORT FIRST!*/ PROC SORT DATA=WERNER; BY PILL; RUN; PROC MEANS DATA=WERNER; BY PILL; TITLE2 "DESCRIPTIVE STATS USING THE BY STATEMENT"; FORMAT PILL PILLFMT.; RUN; /*CHECK DISTRIBUTION OF VARIABLES FOR PILL AND NO PILL*/ PROC UNIVARIATE DATA=WERNER PLOT NORMAL; BY PILL; VAR BMI; TITLE2 "DISTRIBUTION OF BMI FOR PILL AND NO PILL"; RUN; PROC UNIVARIATE DATA=WERNER PLOT NORMAL; BY PILL; VAR LOGBMI; TITLE2 "DISTRIBUTION OF LOGBMI FOR PILL AND NO PILL"; RUN; PROC UNIVARIATE DATA=WERNER PLOT NORMAL; BY PILL; VAR ALB; TITLE2 "DISTRIBUTION OF ALBUMIN FOR PILL AND NO PILL"; RUN; PROC UNIVARIATE DATA=WERNER PLOT NORMAL; BY PILL; VAR CHOL; TITLE2 "DISTRIBUTION OF CHOLESTEROL FOR PILL AND NO PILL"; RUN; /*ONE-SAMPLE T-TEST: USING PROC TTEST, PROC UNIVARIATE AND PROC MEANS*/ PROC TTEST DATA=WERNER H0=225; VAR CHOL; TITLE2 "ONE-SAMPLE T-TEST USING PROC TTEST"; RUN; PROC UNIVARIATE DATA=WERNER MU0=225; VAR CHOL; TITLE2 "ONE-SAMPLE T-TEST USING PROC UNIVARIATE"; RUN; PROC MEANS DATA=WERNER MEAN STDERR T PROBT; VAR CHOL_225; TITLE2 "ONE-SAMPLE T-TEST USING PROC MEANS"; RUN; /*INDEPENDENT SAMPLES T-TESTS*/ PROC TTEST DATA=WERNER; CLASS PILL; VAR AGE CHOL ALB LOGBMI; TITLE2 "INDEPENDENT SAMPLES TTEST TO COMPARE MEANS"; RUN; /*NON-PARAMETRIC TESTS FOR 2 INDEPENDENT SAMPLES*/ ODS TRACE ON; PROC NPAR1WAY DATA=WERNER WILCOXON MEDIAN EDF; CLASS PILL; VAR BMI ALB; EXACT EDF MEDIAN WILCOXON / MC; ODS SELECT WilcoxonScores WilcoxonTest WilcoxonMC KruskalWallisTest MedianScores MedianTest MedianAnalysis MedianMC KolSmirTest KolSmirExactTest KSMC; TITLE2 "NON-PARAMETRIC TWO-SAMPLE TESTS"; RUN; ODS TRACE OFF; /*CREATE SUBSETS OF DATA FOR PILL AND NO PILL*/ DATA NOPILL PILL; SET WERNER; IF PILL = 1 then output nopill; IF PILL = 2 then output pill; RUN; /*SORT BEFORE MERGING */ PROC SORT DATA=NOPILL; BY PAIR; RUN; PROC SORT DATA=PILL; BY PAIR; RUN; /*MERGE THE TWO DATA SETS BY PAIR*/ DATA WERNER2; MERGE NOPILL(RENAME=(ID=ID1 AGE=AGE1 HT=HT1 WT=WT1 PILL=PILL1 CHOL=CHOL1 ALB=ALB1 CALC=CALC1 URIC=URIC1 BMI=BMI1)) PILL(RENAME=(ID=ID2 AGE=AGE2 HT=HT2 WT=WT2 PILL=PILL2 CHOL=CHOL2 ALB=ALB2 CALC=CALC2 URIC=URIC2 BMI=BMI2)); BY PAIR; CHOLDIFF = CHOL2 - CHOL1; AGEDIFF = AGE2 - AGE1; HTDIFF = HT2 - HT1; WTDIFF = WT2 - WT1; ALBDIFF = ALB2 - ALB1; CALCDIFF = CALC2 - CALC1; URICDIFF = URIC2 - URIC1; BMIDIFF = BMI2 - BMI1; LABEL CHOL1 = "CHOLESTEROL NOPILL" CHOL2 = "CHOLESTEROL PILL" AGE1 = "AGE NOPILL" AGE2 = "AGE PILL" HT1 = "HEIGHT NOPILL" HT2 = "HEIGHT PILL" WT1 = "WEIGHT NOPILL" WT2 = "WEIGHT PILL" ALB1 = "ALBUMIN NOPILL" ALB2 = "ALBUMIN PILL" CALC1 = "CALCIUM NOPILL" CALC2 = "CALCIUM PILL" URIC1 = "URIC ACID NOPILL" URIC2 = "URIC ACID PILL" BMI1 = "BMI NOPILL" BMI2 = "BMI PILL"; RUN; PROC PRINT DATA=WERNER2(OBS=5); TITLE2 "CHECKING THE MERGED DATA"; RUN; /*PAIRED T-TESTS*/ PROC TTEST DATA=WERNER2 H0=0; PAIRED CHOL2*CHOL1 ALB2*ALB1 BMI2*BMI1; TITLE2 "PAIRED T-TEST USING PROC TTEST"; TITLE3 "COMPARING MATCHED SAMPLES: PILL VS. NO PILL"; RUN; /*ONE-SAMPLE T-TESTS ON DIFFERENCES, EQUIVALENT TO PAIRED T-TESTS*/ PROC MEANS DATA=WERNER2 n mean stderr t probt; VAR CHOLDIFF ALBDIFF BMIDIFF; TITLE2 "ONE-SAMPLE T-TEST ON DIFFERENCE SCORES"; TITLE3 "EQUIVALENT TO PAIRED T-TEST"; RUN;