DATA Step, Macro, Functions and more

Multiple Imputation for Ordinal Data violated Proportional Odds Assumption

Reply
New Contributor
Posts: 3

Multiple Imputation for Ordinal Data violated Proportional Odds Assumption

[ Edited ]

Hi

I'm am working with a dataset that contains many variables that I want to use to impute missing values (arbitrary missing pattern) for 4 categorical variables: var1, var2, var3, var4, all these 4 variables have three levels (0,1,2), 90% of which have missing values. I use the FCS and logistic functions within PROC MI, but I run the proportional odds assumption test, the score test shows proportion odds assumption is violated (P<0.001) for var1, var2 and var3. Thus I am not sure what to do next, should I add UNEQUALSLOPES option? If so, where/how should I add? Since the FCS function is so new I am having trouble finding examples of code online for this scenario. I was wondering if anyone has experience using this command and could give me some advice. My codes are:

/*1st step: missing data pattern*/

PROC MI NIPUTE=0 DATA=dsn SIMPLE;

VAR

var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11 var12 var13 var14 var15 var16 var17 var18 var19 var20;

RUN;

/*2nd step: multiple imputation*/

PROC MI DATA=dsn NIPUTE=3 SEED=20160413 OUT=dsn2;

CLASS

var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11 var12 var13 var14 var15 var16 var17 var18 var19 var20

FCS  NBITER=20

LOGISTIC(var1/details) LOGISTIC(var2/details) LOGISTIC(var3/details) LOGISTIC(var4/details);

VAR

var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11 var12 var13 var14 var15 var16 var17 var18 var19 var20;

RUN;

 

Occasional Contributor
Posts: 17

Re: Multiple Imputation for Ordinal Data violated Proportional Odds Assumption

I am currently running exactly the same model now. You can add the unequalslopes at the end of the model statement. This is an example:

 

      proc logistic data=dent;
         class center baseline trt / param=ref order=data;
         model resp(descending) = center baseline trt / unequalslopes;

You have to add the test statements though as like below:

 proc logistic data=dent;
         class center baseline trt / param=ref order=data;
         model resp(descending)=center baseline trt / unequalslopes=trt;
         TRT_RESP4:test trtacl_4,trttl_4,trtach_4,trtth_4;
         TRT_RESP3:test trtacl_3,trttl_3,trtach_3,trtth_3;
         TRT_RESP2:test trtacl_2,trttl_2,trtach_2,trtth_2;
         TRT_RESP1:test trtacl_1,trttl_1,trtach_1,trtth_1;
run;

 

Please read the SAS documentation: http://support.sas.com/kb/22/954.html

I found really helpful. It gives us step-by-step, easy explanations for the assumption test. 

 

Good luck. 

Ask a Question
Discussion stats
  • 1 reply
  • 217 views
  • 0 likes
  • 2 in conversation