BookmarkSubscribeRSS Feed
Thibaut1
Calcite | Level 5

Hello,

  I have run 10 imputed datasets and  now would like to run proc mi analyze to combine my results for my analysis. I have a ordinal, categorical outcome variable so i will be using a proc logistic with a link=glogit function. So far I have done the code below and the test works but it only gives me the pooled estimates and not the estimates for each category in my outcome variable. I would like to know how to get each estimate for the 5 categories present in my outcome variable.

thank you for your help and please find the code below:

proc logistic data=impute_F;
class traj_tabac(ref = "1") p91_cbcl_int_c(ref="0")/param=ref;
model traj_tabac (event = "1") =p91_cbcl_int_c /link=glogit;
ODS OUTPUT parameterestimates=tbint91;
BY _Imputation_;
RUN;
PROC MIANALYZE parms(classvar=classval)=tbint91;
CLASS p91_cbcl_int_c;
MODELEFFECTS p91_cbcl_int_c;
RUN;

2 REPLIES 2
ChrisNZ
Tourmaline | Level 20

Moved to statistics community hoping you'll get an answer there.

SAS_Rob
SAS Employee

Just to clarify, typically the Generalized Logit link (LINK=GLOGIT) is used for a nominal response variable and the cumulative link function with the proportional odds assumption is used for an ordinal response.

That being said, I have included an example using both link functions below.

 

/*Sample data set that assumes the imputation has already been done*/
data test;
seed=2534565;
do _imputation_=1 to 25;
do a=1 to 3;
do i=1 to 250;
ind1=ranuni(seed);
logit=-1 + .05*ind1-.67*a;
p=exp(-logit)/(1+exp(-logit));
if ranuni(seed)>p then y=1;
else if ranuni(314)>.5 then y=2;
else y=3;
output;
end;
end;
end;
run;

/*Generalized Logit Model*/
proc logistic data=test;
by _imputation_;
class a/param=ref;
model y=ind1 a/link=glogit;
ods output parameterestimates=parmsds;
run;

proc mianalyze parms(classvar=classval link=glogit)=parmsds;
class a;
modeleffects Intercept ind1 a;
run;

/*Default Proportional Odds Model*/
proc logistic data=test;
by _imputation_;
class a/param=ref;
model y=ind1 a;
ods output parameterestimates=parmsds;
run;

proc mianalyze parms(classvar=classval link=logit)=parmsds;
class a;
modeleffects Intercept ind1 a;
run;

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!

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
  • 2 replies
  • 837 views
  • 1 like
  • 3 in conversation