BookmarkSubscribeRSS Feed
Dj_enkiz
Calcite | Level 5

Hi

 

I am using ”Proc MI” (SAS 9.4) to impute several missing variables (continuous_mis_1, continuous_mis_2, ordinal_mis_1, and ordinal_mis_2)  with an arbitrary pattern. All missing variables are covariates, of which one is the covariate of interest (ordinal_mis_2[ordinal with 5 levels]).

So, I want to test for interaction, and at this stage I don’t know, if the interaction terms are significant.

Before the “Proc MI” step, dummy variables of the three interaction terms are been created. These dummy variables are subsequently put into the “Proc MI” step, where 4 FCS statements are specified, corresponding to each missing variable. In addition, outcome (var1) and other covariates (age, sex, calendar year, var2, var3, var4, var5, var6, var7, and var8) are included in this statements as well

Basically, I want to create one “Proc Mi” step (i.e. one dataset), which include 3 interaction terms, to test for interactions and also use the same “Proc MI” step for the main results (ordinal_mis_2), that is without the interaction terms. This is because it takes almost 24 hours to run the “Proc MI” step but also to keep it simple.

Now, my question is this, would it be a problem to include interactions terms in the “Proc MI” step if they subsequently show up to be insignificant? The next question, how should I model the FCS statement (the last one in below code) with the variable of interest (ordinal_mis_2) being the outcome so that it also account for interaction? I would say it is not possible and that the provided code is acceptable, but I am not sure. Finally, are the dummy variables considered as continuous if one of the variable in the interaction term is continuous?

I have below provide the data steps.

 

My suggestion:

 

Data want; set have;
Interact_1= ordinal_mis_2*age;
Interact_2= ordinal_mis_2*sex;
Interact_3= ordinal_mis_2*calendar_year;
run;

Proc MI data=want seed=12345  nimpute=25 out=impute;
Class 
Interact_1 Interact_2 Interact_3  ordinal_mis_1 ordinal_mis_2 sex var1 var2 var3 var4 var5 var6 var7 var8;
FCS regpm (continuous_mis_1= continuous_mis_2 ordinal_mis_1 ordinal_mis_2  Interact_1 Interact_2 Interact_3 sex var1 var2 var3 var4 var5 var6 var7 var8  age calendar year /details)
FCS regpm (continuous_mis_2= continuous_mis_1 ordinal_mis_1 ordinal_mis_2 Interact_1 Interact_2 Interact_3 sex var1 var2 var3 var4 var5 var6 var7 var8 age calendar year /details)
FCS logistic(ordinal_mis_1= continuous_mis_1 continuous_mis_2 ordinal_mis_2 Interact_1 Interact_2 Interact_3 sex var1 var2 var3 var4 var5 var6 var7 var8 age calendar year /details)

/*IN THIS LAST FCS STATEMENT NO INTERACTION TERMS*/
FCS logistic(ordinal_mis_2= continuous_mis_1 continuous_mis_2 ordinal_mis_1 sex var1 var2 var3 var4 var5 var6 var7 var8 age calendar year /details); 
Var
Interact_1 Interact_2 Interact_3  
sex var1 var2 var3 var4 var5 var6 var7 var8
age calendar year
continuous_mis_1 continuous_mis_2  ordinal_mis_1 ordinal_mis_2 ;
run;

/*Main analysis*/
proc phreg data=impute;
class ordinal_mis_1(ref=first) ordinal_mis_2(ref=first) sex(ref=first) var2(ref=first) var3(ref=first) var4(ref=first) var5(ref=first) var6(ref=first) var7(ref=first) var8(ref=first)/param=ref;
model time*var1(0)= 
ordinal_mis_2 /*Main results*/
sex var2 var3 var4 var5 var6 var7 var8
age calendar year
continuous_mis_1 continuous_mis_2  ordinal_mis_1 /covb rl;
by _imputation_;
ods output parameterestimates=outparms covb=outcovb;
run;

Proc mianalyze  parms(classvar=classval)=outparms;
class
ordinal_mis_1 ordinal_mis_2 sex var2 var3 var4 var5 var6 var7 var8;
modeleffects
ordinal_mis_2 /*Main result*/
sex var2 var3 var4 var5 var6 var7 var8
age calendar year
continuous_mis_1 continuous_mis_2 ordinal_mis_1;
ods output parameterestimates=outparms;
run;




/*Test for interaction, interact_1 (Same approach for interact_2 and Interact_3)*/

proc phreg data=impute;
class interact_1(ref=first) ordinal_mis_1(ref=first) ordinal_mis_2(ref=first) sex(ref=first) var2(ref=first) var3(ref=first) var4(ref=first) var5(ref=first) var6(ref=first) var7(ref=first) var8(ref=first)/param=glm;
model time*var1(0)= 
interact_1
sex var2 var3 var4 var5 var6 var7 var8
age calendar year
continuous_mis_1 continuous_mis_2  ordinal_mis_1 ordinal_mis_2 /covb rl;
by _imputation_;
ods output parameterestimates=outparms covb=outcovb;
run;

Proc mianalyze  parms(classvar=classval)=outparms;
class
interact_1 ordinal_mis_1 ordinal_mis_2 sex var2 var3 var4 var5 var6 var7 var8;
modeleffects
interact_1
ordinal_mis_1 ordinal_mis_2 sex var2 var3 var4 var5 var6 var7 var8
age calendar year
continuous_mis_1 continuous_mis;
ods output parameterestimates=outparms;
run;


sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 0 replies
  • 2052 views
  • 0 likes
  • 1 in conversation