Multiple membership models PreviousNext
Mplus Discussion > Multilevel Data/Complex Sample >
 ben posted on Wednesday, March 30, 2005 - 5:37 pm
Dear Bengt and Linda

I was wondering whether Mplus had the facility to conduct a multiple membership multilevel model where level 1 units belong to 2 or more higher level units (eg. a longitudinal study of children where many children will change the neighbourhood that they live in).

This type of model is described in the Mlwin handbook and by Hill and Goldstein (1997) in their article in the Journal of Educational and Behavioural Statistics. I would be interested in doing some multilevel SEM in the future but need to take into account a multiple membership multilevel model.
 Linda K. Muthen posted on Saturday, April 02, 2005 - 8:41 pm
No, this is not in the current version of Mplus.
 Michael J. Zyphur posted on Thursday, May 05, 2005 - 8:40 pm
I recently bought Mplus and am a bit sorry there's no easy way to do multiple membership models. However, I think I found a way to do it (for certain types of models) and wanted some feedback regarding my method.

With people nested within 1-5 groups, I have taken the data and, for people in more than 1 group, I have simply duplicated their data for each group they are in. So, if someone was in two groups (labeled group 1 and group 2), they now have two rows of data, which have the same values. One of the rows is linked to group 1 and another is linked to group 2.

Here's my trick: For each row there is now a weighting variable which is 1/"the number of group memberships", so someone who was in two groups has their data associated with both groups, but their data only receives half the weight of someone who was only in one group (and someone in 5 groups has 5 rows of data, but each has only 1/5 the weight of someone who was only in group). Obviously, this method only works if you can safely assume that someone's data is equally associated with all the groups they are in.

Does this make sense? To get at the meaning of the output, will I have to correct significance values and Ns, etc? Can anyone give me some advice on this model in general and if there's a more efficient way to do this.


Michael J. Zyphur
 Linda K. Muthen posted on Friday, May 06, 2005 - 7:12 am
I'm not sure what a multiple membership model is so I can't say whether this makes sense. Can you explain a little more? Do you do this as a multiple group analysis? If so the observations in the groups should be independent.
 bmuthen posted on Saturday, May 07, 2005 - 12:02 pm
Cross-classified random effects modeling is not yet available in Mplus. Let me get back to you about your proposed approach.
 Michael J. Zyphur posted on Saturday, May 07, 2005 - 7:06 pm
Dear Bengt & Linda,
Irrespective of the cross classified and multiple membership (MM) modeling, your product is GREAT, thanks for your time with this!

The big problems I see with my approach (and I don't know much about it) are 1) this method, because it's TWOLEVEL, must use the SAMPLING weight and not the FREQUENCY weight, a problem because the weight indicates more the "frequency" of the data point, rather than its sampling probability. 2) This method may not weight appropriatelly at both individual-level and group-level.

Also, this scheme is VERY computer intensive (I have 13,000 L1 and 4,000 L2 data points and many cross-level effects). I cannot even use INTEGRATION = 5, and must use the MONTECARLO option to iterate. Will this pose problems for model?

Thank you for your time.

Michael J. Zyphur
 Michael J. Zyphur posted on Saturday, May 07, 2005 - 7:10 pm
Sorry to repost, but will Mplus run on a multiprocessor system? Can you give any advice on what kind of computer to buy to do complex problems with Mplus (e.g., what OS, how many GB ram, etc.)? I assume you all compute very complex models there, ?what do you use?, because my models are taking a week to run on P4s.

 Linda K. Muthen posted on Sunday, May 08, 2005 - 6:53 am
Re: multiprocessor, we are looking into this at the present time. We do complex models a lot but seldom with more than 4 dimensions of integration. The number of observations is also an issue as the entire data set is read at each iteration. We usually use a computer with a 2 Ghz processor and 2 Gbytes of RAM. We would never let a problem go for a week. Rather we would try to simplify it by changing the computational specifications and simplifying the way the model is specified. I wonder if you are using Version 3.12 as we made signficant speed improvements in that version. You can send your input and data to and we can see if we can make some suggestions. We are continually working on ways to speed things up.
 bmuthen posted on Monday, May 09, 2005 - 9:39 am
Regarding your idea for approximately handling multiple membership data, it is hard to see how well your approach would work - and it probably would vary quit a bit across situations. It would have to be evaluated by simulations. But I am not sure I would recommend that. Instead these data should be specifically modeled and Mplus can't do that yet, but perhaps in the not so distant future. In the meanwhile it might be best to acknowledge the problem but approximate membership by that of the first time point or some other influential time point (for instance, 8th grade is quite influential when it comes to US math achievement).
 Gareth Morgan posted on Friday, September 10, 2010 - 7:00 am
I just wanted to follow up and inquire whether MPLUS version 6 can handle cross-classified or multiple membership random effects models? These models are described in Hill and Goldstein (1997).


 Linda K. Muthen posted on Friday, September 10, 2010 - 8:47 am
Not yet.
 Kätlin Peets posted on Friday, May 31, 2013 - 7:04 am
I would like to examine how certain teaching practices in the kindergarten (cluster-level/classroom-level covariate) influence the development of aggression from Grades 1 to 4. I have two clustering variables: 1) one that indicates cluster membership in the kindergarten; 2) the other that indicates cluster membership in first to fourth grades. I am not sure how to set up my model in this case (having two clustering variables). Could you help me out?

Thank you
 Bengt O. Muthen posted on Friday, May 31, 2013 - 8:38 am
Yes, this can be done using the new Version 7 feature of Type=Crossclassified. See slides 57-60 of the Part 3 handout for the Utrecht training at

Note that there is also a video of this on our website.

Those slides refer to a recent JEBS paper.
 Kätlin Peets posted on Sunday, June 02, 2013 - 7:38 pm
I am still not sure how to set up the model. Aggression was measured in Grades 1 to 4 (cluster = klass). However, my between-level predictor (laa) was measured in the kindergarten (cluster = lakood). So, I am not sure what should be specified under %between lakood%.
My goal is to test whether laa predicts variance in the intercept and slope.

TITLE: multilevel;
DATA: FILE IS Cross-classified.dat;
VARIABLE: names are Klass LAKood Sugu at LAA LAT LAC LASiil LAAgress LASots Agress0 agress1 agress2 agress3 sots0
sots1 sots2 sots3;
usevariables are agress0 agress1 agress2 agress3 laa ;

missing = all (-99);
CLUSTER IS klass lakood;
BETWEEN IS (lakood) laa;
Analysis: type = crossclassified ;
estimator = bayes;
processors = 2;


iw sw | agress0@0 agress1@1 agress2@2.5 agress3@4;
agress0-agress3 (1);

%between klass%
ib sb | agress0@0 agress1@1 agress2@2.5 agress3@4;

%between lakood%
 Tihomir Asparouhov posted on Monday, June 03, 2013 - 9:40 am
Your model is very similar to the model described on page 57 in


fs BY agress0-agress3@1 laa@1;
[agress0-agress3 laa];

%BETWEEN klass%
iw by agress0@1 agress1@1 agress2@1 agress3@1 laa@0;
sw by agress0@0 agress1@1 agress2@2.5 agress3@4 laa@0;
agress0-agress3@0 laa@0;
[agress0-agress3@0 laa@0];

%BETWEEN lakood%
agress0-agress3@0; laa;
[agress0-agress3@0 laa@0];
 Kätlin Peets posted on Monday, June 03, 2013 - 10:20 am
Thank you! I am still confused (I also ran the model and it did not work). "Laa" is a cluster-level (kindergarten) variable. So, it cannot be specified at the within level. Also, shouldn't there be a command that specifies a path between "laa" and intercept and "laa" and slope?
 Tihomir Asparouhov posted on Monday, June 03, 2013 - 2:52 pm
oh - I see. I misunderstood the meaning of laa. Try this.


fs BY agress0-agress3@1;

%BETWEEN klass%
iw by agress0@0 agress1@1 agress2@1 agress3@1;
sw by agress0@0 agress1@1 agress2@2.5 agress3@4;

%BETWEEN lakood%
iw2 by agress0@1 agress1@1 agress2@1 agress3@1;
iw2 on laa;
 Tihomir Asparouhov posted on Monday, June 03, 2013 - 5:12 pm
Ops ... this model is better since you want to see that the kindergarten effect decreases over time (take a careful look at the slides and the paper that is referred there).

%BETWEEN lakood%
iw2 by agress0@1 agress1 agress2 agress3;
iw2 on laa;
 Kätlin Peets posted on Tuesday, June 04, 2013 - 8:30 am
Thanks a lot. To be clear...agress0 to agress3 are not measured in the kindergarten at all (only laa is).

Shouldn't the statement in %between klass% be
iw by agress0@1 agress1@1 agress2@1 agress3@1; rather than
iw by agress0@0 agress1@1 agress2@1 agress3@1;

Also, doesn't the following statement evaluate laa effect on intercept and not on the slope?
iw2 on laa;

Again, thanks so much for your help.
 Tihomir Asparouhov posted on Thursday, June 06, 2013 - 9:26 am
I see ... then I would say this model is more appropriate


fs BY agress0-agress3@1;

%BETWEEN klass%
iw by agress0@1 agress1@1 agress2@1 agress3@1;
sw by agress0@0 agress1@1 agress2@2.5 agress3@4;

%BETWEEN lakood%
iw2 by agress0@1 agress1 agress2 agress3;
iw2 on laa;

You could look for a slope effect but the interpretation might be a bit difficult.
Because the loadings in the above model are not fixed the K effect on agress changes over time.

Alternatively, this model would also work.

%BETWEEN lakood%
iw2 by agress0@1 agress1@1 agress2@1 agress3@1;
sw2 by agress0@0 agress1@1 agress2@2.5 agress3@4;
iw2 sw2 on laa;
 Kätlin Peets posted on Thursday, June 06, 2013 - 3:03 pm
Thanks a lot!
 Leslie Hawley posted on Thursday, July 04, 2013 - 10:20 pm

I was wondering what the syntax would look like if I added a latent variable to the model shown on slides 59-60 of the Part 3 handout for the Utrecht training at

Specifically, I have three measures of academic ability across four time points and I have had difficultly with specifying my latent variable across the between parts of the model (i.e., my two membership clusters).

Thank you!
 Bengt O. Muthen posted on Friday, July 05, 2013 - 8:44 am
Instead of the observed Y variables at the different time points, you would have an academic ability factor. So you study growth of a latent variable with multiple (3) indicators. We have multiple indicator growth example(s) in the UG, which can be combined with the slide 60 input. If you have problems with this setup, please send the output for your best effort, data, and license number to support.
 Sanne Korneev posted on Monday, April 13, 2015 - 12:08 am
Dear Mplus-team,

Is it possible to combine type=cross with multigroup modeling in Mplus?

For example: if students are nested in schools and neighbourhoods, and we want to test measurement invariance with respect to some school-level grouping variable?

I am sorry asking you instead of trying it myself, but I do not have version 7 yet.

Thanks in advance!
 Linda K. Muthen posted on Monday, April 13, 2015 - 6:31 am
This is not possible in Mplus.
 Julija Mell posted on Tuesday, August 16, 2016 - 1:59 am
Dear MPlus team,

I would like to follow up on the multiple membership question. If I understand correctly from the documentation, MPlus can handle cross-classified data. From the examples I saw, that would be a case where there are two different sets of level2 clusters with each level1 unit belonging to exactly 2 clusters, one in each set (e.g. primary school, high school).
In my case, multiple membership is structured a bit differently:
I have a 3-level dataset, level 1 being employees, level 2 being team leaders, and level 3 being executives. Employees are nested within teams/team leaders, that one is easy.
The more complex situation is the relationship between team leaders and executives: Team leaders are/ can be connected to executives. Some have one connection/affiliation, some have multiple, some have none.
In terms of model, what I am trying to do is to predict an outcome at the employee level by an attribute of the executives. I would set up a membership weight matrix along the lines of Browne et al. (2001, Statistical Modeling), with the idea any Executive's attribute only has an effect on the employee's outcome when an affiliation between the associated team leader and the executive exists.
I am not sure, however, how to set up a model like this in MPlus and, most importantly, whether this is actually possible.
I appreciate your advice on this!

Kind regards,
 Bengt O. Muthen posted on Tuesday, August 16, 2016 - 5:35 pm
Mplus and multiple membership is described on slides 57-60 of the Part 3 handout for the Utrecht training at

I am not familiar with membership weight matrix approaches. You may want to ask on Multilevelnet - perhaps someone (like Joop Hox) has done this in Mplus (or email him directly). Let us know if you find out.
 Samuli Helle posted on Wednesday, January 16, 2019 - 1:08 pm

I am wondering whether there are differences in syntax or how the data are structured between cross-classified and multiple memberships models in Mplus?
 Bengt O. Muthen posted on Wednesday, January 16, 2019 - 2:13 pm
Multiple membership modeling is done via cross-classified analysis in Mplus (see the end of the Topic 10 video and handout) so it would use the data structure of the latter.
 Samuli Helle posted on Thursday, January 17, 2019 - 1:36 am
So the data needs to be in long format and Mplus can automatically tell whether my data structure is cross-classified or multiple membership?

Is there a way to output a design matrix for this multiple membership structure?

 Tihomir Asparouhov posted on Thursday, January 17, 2019 - 5:52 pm
You have to set it up as a cross-classified model. Take a look at the particular example we discuss in Part 3
 Samuli Helle posted on Thursday, January 17, 2019 - 10:25 pm
Hi Tihomir,
I have been reading all those resources and I get the model running. However, I doubt my model is still cross-classified as I get separate random intercepts for both the L2 clusters. I think in multiple membership model, one should have just one random intercept. At least that appears to be the case in applications with other softwares I have seen (e.g.
 Bengt O. Muthen posted on Friday, January 18, 2019 - 7:01 am
We need to see your output - please send to Support along with your license number.
Back to top
Add Your Message Here
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Options: Enable HTML code in message
Automatically activate URLs in message