libname cda 'I:\Biometry711\Summer2015\Multinomial'; data one; set cda.lbwt; if bwt le 2500 then bwt_class = 1; else if bwt le 3000 then bwt_class = 2; else if bwt le 3500 then bwt_class = 3; else bwt_class = 4; run; *CHECK THAT CONSTRUCTED VARIABLE IS CORRECT; proc freq data = one; table bwt_class*bwt/list missing; run; /* PROC LOGISTIC REQURES THAT THE DATA BE ORDERED IN ASCENDING OR DESCENDING ORDER TO MODEL AN ORDINAL VARIABLE */ proc sort data = one; by bwt_class; run; *ods pdf style = journal file = 'I:\Biometry711\Summer2015\Multinomial\SAS_output_prop_odds.pdf'; /* FIT PROPORTIONAL ODDS MODEL WITH CONTINUOUS PREDICTOR. 1. order = data TELLS SAS TO TREAT THE ORDINAL RESPONSE AS IT IS ORDERED IN THE DATA SET; 2. link = clogit TELLS SAS TO USE A CUMULATIVE LOGIT. THIS IS ALSO THE DEFAULT; 3. clodds = wald TELLS SAS TO PRODUCE WALD CIs FOR ORs. 4. units STATEMENT PRODUCES ORs FOR A 10 UNIT INCREASE IN lwt. 5. output STATEMENT PRODUCES AN OUTPUT DATA SET; */ title 'PROPORTIONAL ODDS MODEL'; proc logistic data = one order = data; model bwt_class = lwt/link = clogit clodds = wald; units lwt = 10; output out = logist_out predicted = p_hat; run; title; *USE DESCENDING OPTION TO MODEL ORDINAL RESPONSE IN REVERSE ORDER; title 'PROPORTIONAL ODDS MODEL - REVERSE ORDER'; proc logistic data = one descending; model bwt_class = lwt/link = clogit clodds = wald; units lwt = 10; output out = logist_out predicted = p_hat; run; title; *FIT PROPORTIONAL ODDS MODEL WITH A CATEGORICAL PREDICTOR; title 'PROPORTIONAL ODDS MODEL WITH CATEGORICAL PREDICTOR'; proc logistic data = one order = data; class ht (param = ref ref = '0'); model bwt_class = lwt ht/link = clogit clodds = wald; run; title; /* IF WE QUESTION THE PROPORTIONAL ODDS ASSUMPTION, WE CAN USE THE unequalslopes MODEL OPTION AND CONDUCT FORMAL TESTS TO DETERMINE THE VERACITY OF THIS ASSUMPTION. WE ALSO USE THE outest PROC OPTION TO OBTAIN NAMES OF PARAMETERS TO CONDUCT SPECIFIC TESTS. N.B. only available with SAS/STAT 12.1. */ title 'CUMULATIVE LOGIT MODEL - UNEQUAL SLOPES'; proc logistic data = one order = data outest = outest; class ht (param = ref ref = '0'); model bwt_class = lwt ht/link = clogit clodds = wald unequalslopes; run; title; *TEST EQUALTIY OF SLOPE PARAMETERS FOR ht FOR EACH OF THE CUMULATIVE LOGITS; title 'PARTIAL PROPORTIONAL ODDS MODEL WITH TESTS FOR EQUALITY OF SLOPES'; proc logistic data = one order = data; class ht (param = ref ref = '0'); model bwt_class = lwt ht/link = clogit clodds = wald unequalslopes = ht; PropOdds_HT_bwt1VS2: test ht1_1 = ht1_2; PropOdds_HT_bwt1VS3: test ht1_1 = ht1_3; PropOdds_HT_bwt2VS3: test ht1_2 = ht1_3; run; title; *PARTIAL PROPORTIONAL ODDS MODEL; title 'PARTIAL PROPORTIONAL ODDS MODEL'; proc logistic data = one order = data; class ht (param = ref ref = '0'); model bwt_class = lwt ht/link = clogit clodds = wald unequalslopes = ht; units lwt = 10; run; title; *ods pdf close;