1 The SAS System 13:44 Wednesday, January 28, 1998 NOTE: Copyright (c) 1989-1996 by SAS Institute Inc., Cary, NC, USA. NOTE: SAS (r) Proprietary Software Release 6.12 TS020 Licensed to UNIVERSITY OF NORTH CAROLINA AT CHAPEL HILL, Site 0003944001. 1 TITLE1 "EXAMPLE1.SAS--Demonstrate simple LINMOD use"; 2 3 * Data are from Danford, Hughes, and McNee, *; 4 * "On the Analysis of Repeated Measurement Experiments," *; 5 * Biometrics, 16, 1960, pp. 547-565. *; 6 7 * 0. Define raw data file; 8 FILENAME IN01 "..\EXAMPLES\PAYNE.DAT"; 9 DATA PAYNE; 10 INFILE IN01; 11 INPUT @7 GROUP $ INIT SCORE2 SCORE4 SCORE6 SCORE8 SCORE10; 12 * Create indicator variables ; 13 CONTROL = (GROUP="1"); 14 LOW = (GROUP="2"); 15 MODERATE= (GROUP="3"); 16 HIGH = (GROUP="4"); 17 NOTE: The infile IN01 is: FILENAME=W:\SMAJOR\BIOS163\LINMOD32\EXAMPLES\PAYNE.DAT, RECFM=V,LRECL=256 NOTE: 45 records were read from the infile IN01. The minimum record length was 31. The maximum record length was 31. NOTE: The data set WORK.PAYNE has 45 observations and 11 variables. NOTE: The DATA statement used 1.71 seconds. 18 PROC PRINT DATA=PAYNE; 19 20 * 1. Define directory in which LINMOD source code has been stored; 21 %LET LMDIRECT = ..\SOURCE\ ; 22 23 * 2. Define SAS macro code needed; 24 %INCLUDE "&LMDIRECT.MACROLIB.MAC" / NOSOURCE2 ; 41 42 * 3. Reduce raw data to a TYPE=CORR file named _CORRDS_ 43 with characteristics required by LINMOD; 44 &PROCSSCP DATA=PAYNE ; NOTE: The PROCEDURE PRINT printed page 1. NOTE: The PROCEDURE PRINT used 0.44 seconds. 2 The SAS System 13:44 Wednesday, January 28, 1998 45 VAR CONTROL LOW MODERATE HIGH INIT 46 SCORE2 SCORE4 SCORE6 SCORE8 SCORE10; 47 48 * 4.1 Start IML with at least minimum space needed; 49 * Use SHOW SPACE statement and larger WORKSIZE, SYMSIZE values 50 to tune performance with bigger problems; NOTE: The data set WORK._CORRDS_ has 14 observations and 13 variables. NOTE: The PROCEDURE CORR used 0.5 seconds. 51 PROC IML WORKSIZE=2000 SYMSIZE=3500; Worksize = 2048000 Symbol size = 3584000 IML Ready 52 53 * 4.2 Initialize LINMOD IML code; 54 &LINMOD ; NOTE: Module _DEFOPT_ defined. NOTE: Module _EREXIT_ defined. NOTE: Module _FITMOD_ defined. NOTE: Module _GETCSS_ defined. NOTE: Module _INITL_ defined. NOTE: Module _MAKESS_ defined. NOTE: Module _NMLIST_ defined. NOTE: Module _PRPARM_ defined. NOTE: Module _PVTYPE_ defined. NOTE: Module _SCAN_ defined. NOTE: Module _SETOPT_ defined. NOTE: Module _TSTGLH_ defined. NOTE: Module _UNIREP_ defined. NOTE: Module _UNSCAN_ defined. NOTE: Module _ZPIVOT_ defined. NOTE: Module FITMODEL defined. NOTE: Module GETCORSS defined. NOTE: Module MAKESS defined. NOTE: Module SETOPT defined. NOTE: Module TESTGLH defined. NOTE: Module NAMELIST defined. NOTE: Module UTREND defined. NOTE: Module UMEAN defined. NOTE: Module UPOLY1 defined. NOTE: Module UPOLY2 defined. 2288 2289 * 4.3 Test new "NOPRINT" option; 2290 OPT_OFF = {NOPRINT}; 2291 RUN SETOPT; 3 The SAS System 13:44 Wednesday, January 28, 1998 2292 2293 * 5. Retrieve the file _CORRDS_ created in Step 3 ; 2294 RUN GETCORSS; 2295 2296 * 6. Define the model and estimate primary parameters; 2297 INDVARS = { "CONTROL" "LOW" "MODERATE" "HIGH" "INIT" }; 2298 DEPVARS=NAMELIST("SCORE",2,10,2); 2299 *Last statement creates following matrix-- 2300 *DEPVARS = { "SCORE2" "SCORE4" "SCORE6" "SCORE8" "SCORE10" }; 2301 RUN FITMODEL; 2302 2303 * 7.1 Conduct a test (and estimation) step; 2304 NOTE={"* MANOVA Test of Main Effect of Treatment, *" 2305 , "* comparing each treatment group to the control group *" } ; 2306 PRINT ,NOTE ; 2307 C = { 1 -1 0 0 0 , 2308 1 0 -1 0 0 , 2309 1 0 0 -1 0 } ; 2310 THETARNM= { "C-LOW" "C-MOD" "C-HIGH" }; 2311 *U defaults to Identity matrix, if NROW(U)=0; 2312 RUN TESTGLH; 2313 2314 * 7.2 Conduct another test (and estimation) step; 2315 NOTE={"* Trends by Treatment Interaction, *" 2316 , "* comparing each treatment group to the control group *" } ; 2317 PRINT , NOTE ; 2318 *Re-use the same C matrix; 2319 *Note that all user inputs (C, U, THETA0, THETARNM, THETACNM, etc.) 2320 are never changed by LINMOD, and hence remain in existence; 2321 *May FREE THETACNM, for example, to avoid conflict 2322 between successive invocations of TSTGLH; 2323 TIMES ={2 4 6 8 10}; 2324 RUN UPOLY1(TIMES ,"Time", 2325 USCORE , SCORENM ); 2326 U = USCORE; 2327 THETACNM = SCORENM ; 2328 RUN TESTGLH; 2329 2330 SHOW NAMES; Exiting IML. NOTE: The PROCEDURE IML printed pages 2-9. NOTE: The PROCEDURE IML used 3.43 seconds. NOTE: SAS Institute Inc., SAS Campus Drive, Cary, NC USA 27513-2414