BookmarkSubscribeRSS Feed
Lorant
Calcite | Level 5
Hello,

I would like to apply a multilevel multiple membership models to a binary outcome. Because Proc Glimmix is not very efficient for large number of random effects, I shifted to BGLIMM. Yet I wonder if that procedure can incorporate multiple membership ?

In practice I have a multiple networks dataset with 10,000 egos nested in 50 networks and each ego might have up to 5 different alters. I want avoid meta-analysing the results for different networks. Is BGLIMM tunable to that need ?

Thanks for the advice

Vincent
Vincent Lorant
UCLouvain
10 REPLIES 10
sbxkoenk
SAS Super FREQ

Hello,

 

Interesting question.

You can indeed use
PROC GLIMMIX for fitting multilevel multiple membership models to hierarchical binary data (binary outcomes).

 

Model specifications in PROC BGLIMM are mostly identical to those in PROC MIXED and PROC GLIMMIX.
https://go.documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/statug/statug_bglimm_overview03.htm

Do you get errors with your model specification in BGLIMM?

I would think BGLIMM can handle this.

I have forwarded your question internally to a colleague that should know the answer.

 

Thanks,

Koen

sbxkoenk
SAS Super FREQ

Dear professor,

 

Your question : Yet I wonder if that procedure (BGLIMM) can incorporate multiple membership ?

 

Here's the answer from my colleague :

Yeah, if multiple membership models mean that the random effects don’t need to be nested (nested means student within classroom within school within district), then BGLIMM supports this type of model. Student can be the cluster for one RANDOM statement, and topic (English, math, science) can be for another, and the two subject= variables do not need to be nested.

 

Hope this helps,

Koen

Lorant
Calcite | Level 5
Dear Koen,

Thanks for your reply but this solution allows to model multiple classifications but not multiple memberships : an ego may belong to two different groups of the same classification variable. Ego may be member of, say, triad 1, and of triad 2, etc. To take your example, a student may belong to two different classes ( for whatever admin reasons).
In addition some egos may have juste one membership, whereas others may have many more: the pattern of memberships may be very different from one ego to another.

In GLIMMIX these complexities can be handled with the «  EFFECT » statement. How to do the same in PROC BGLIMM ?

Thanks for the guidance.

Vincent
Vincent Lorant
UCLouvain
sbxkoenk
SAS Super FREQ

Hello,

 

I understand , but I don't have an immediate answer ready for this.
I will reach out again to my colleague in R&D.

 

Stay tuned,

Koen

 
SteveDenham
Jade | Level 19

How would a Bayesian approach assist you (since that is what BGLIMM is for)? At this point, I do not believe BGLIMM (or PROC MCMC) supports the EFFECT statement to generate a multimember design.

 

SteveDenham 

Lorant
Calcite | Level 5

Thank you Steve.  As Glimmix is unable to deal with thousands of random effects (often the case with social network datasets), I shifted to BGLIMM but indeed is does not handle multiple memberships.

 

 

  

Vincent Lorant
UCLouvain
sbxkoenk
SAS Super FREQ

Hello @Lorant ,

Hello @SteveDenham ,

 

Subject: Multiple membership random models with Proc BGLIMM

 

The workaround is to use the GLIMMIX procedure, which produces the design matrix (use the EFFECT statement for constructed effects), and then use the outputted design matrix in BGLIMM.

It’s the OUTDESIGN= option you want to use in GLIMMIX.

 

Ciao,

Koen

sbxkoenk
SAS Super FREQ

Hello @Lorant ,

 


The workaround is to use the GLIMMIX procedure, which produces the design matrix (use the EFFECT statement for constructed effects), and then use the outputted design matrix in BGLIMM.

It’s the OUTDESIGN= option you want to use in GLIMMIX.

Did you have time to try out the above suggestion?

Do you have any follow-up questions?

 

Thanks,

Koen

Lorant
Calcite | Level 5
Dear Koen,

Sorry for the delay in answering you. I hadn’t had time to check your solution yet but I will. I have however a concern: how do pass that design matrix from GLIMMIX to BGLIMM what is the statement in BGLIMM ?

Regards.
Vincent Lorant
UCLouvain
sbxkoenk
SAS Super FREQ

Hello,

 


@Lorant wrote:
: how do pass that design matrix from GLIMMIX to BGLIMM what is the statement in BGLIMM ?

There is unfortunately no "indesign=" - option (like there's an "outdesign=" - option). That's a pity.
But below I give an example (2 times PROC GLIMMIX admittedly).
It will not be as simple for every model. But definitely possible!
( Not that the below example is very straightforward. I had to do quite a bit of searching. 😉 )

 

SAS/STAT® 15.3 User's Guide

The GLIMMIX Procedure
Example 52.16 Diallel Experiment with Multimember Random Effects
https://go.documentation.sas.com/doc/en/statug/15.3/statug_glimmix_examples21.htm

Complete code for this example :

https://go.documentation.sas.com/doc/en/statug/15.3/statug_code_gmxex16.htm

 

And here a PROC GLIMMIX on the design matrix that is resulting in the same model :

proc glimmix data=diallel outdesign=mat;
   class block sym p m;
   effect line = mm(p m);
   model  time = block;
   random line sym p m p*m;
run;
 
proc print data=mat;
run;
 
proc glimmix data=mat;
class block;
   model  time = block;
   random _z1-_z8 / type=toep(1);
   random _z9 - _z36 / type=toep(1);
   random _z37-_z44 / type=toep(1);
   random _z45 - _z52 / type=toep(1);
   random _z53-_z108 / type=toep(1);
run;
 
*** or if the fixed effects have to be from the design matrix, then use the following program;
proc glimmix data=mat;
   model  time = _x2;
   random _z1-_z8 / type=toep(1);
   random _z9 - _z36 / type=toep(1);
   random _z37-_z44 / type=toep(1);
   random _z45 - _z52 / type=toep(1);
   random _z53-_z108 / type=toep(1);
run;

Koen

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
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
  • 10 replies
  • 1156 views
  • 2 likes
  • 3 in conversation