Jeroen Ooms posted on Friday, August 29, 2008 - 4:34 am
I have a (simulated) dataset in which 4 observed variables function as indicators for one latent factor. However, one of the factor loadings has some between group variance: the population factor loading of y4 is .3 for half of the groups, and .5 for the other half. The other factor loadings are homogeneous across the groups @ 0.5
I want to evaluate if the twolevel model is capable of discovering this. I tried to fit the model with only within level effects:
MODEL: %within% y1-y4*.25; [y1-y4*0]; f BY y1-y4*.5; f@1; [f@0];
When i fit this model, mplus estimates f BY y1-3 at 0.5 (correctly), and has estimated f BY y4 at 0.4 for the entire group. However, the model seems to fit perfectly (chi.sq < 1). I dont understand why it fits perfeclty, because the estimate of 0.4 is incorrect for all groups, it is 0.3 for half of the groups and 0.5 for the other half of the groups.
I think my question is: does mplus by default also estimate a variance parameter for the factor loading? If so, how can i fix this variance@0? And if not, why does this model fit perfectly, although the model parameter of 0.4 is actually incorrect for all groups?
I assume that by "group" you mean cluster in the sense of students observed within schools (cluster = school). It sounds like you want a random loading for y4, which you should specify as
%within% f by y1-y3; s | y4 on f;
%between% [s]; s;
where [s] and s on between gives the mean and variance of the 4th loading across the clusters.
In some cases, model misspecification gets absorbed into model parameters and doesn't cause a model misfit. I have not penetrated your model enough to say why that seems to happen here.
Jeroen Ooms posted on Friday, August 29, 2008 - 9:06 am
Thank you for your response. In your example f is measured by y1-3 and y4 is regressed on f. This is something different than measuring f by y1-y4, right? I explicity want to test if scale equivalence holds, which means equal factor loadings across clusters.
From your response I assume that there is no such thing as a random factor loading. If that seems to be the case, then I still don't understand what caused the perfect model fit.
Here is some output from the MC:
ESTIMATES S. E. M. S. E. 95% % Sig Population Average Std. Dev. Average Cover Coeff
as you can see, the factor loading for y4 was on avg estimated at 0.4, with a mse of .01. This is correct, because factor loadings were 0.5 for half of the clusters, and 0.3 for the other half. However this model misspecification does not affect the chi2, the average chi-square is below 2, indicating a 'perfect fit'. Do you have any idea what could have caused this?
On your 1st paragraph, f is still measured by y4. Note that a loading is a regression coefficient of a y on f. The only difference compared to regular factor analysis is that the loading is random as I specified it, which is what you wanted.
So there is indeed such a thing as a random factor loading in Mplus.
Boliang Guo posted on Thursday, September 25, 2008 - 2:49 am
my quesstion is:assuming all loadings are random,then, the mean of each loading same as the loading for the 2-level factor fb? sorry, I could not get the model convergent with ex9.10 data at the moment.
No, the means of random loadings are not the same as the loading of the between-level fb.
Non-convergence for these data is most likely due to the fact that the data were not created with random slopes. This has the consequence that the variances of the random slopes go to zero and that takes a long time (many iterations). The output that you get at the end should show those variances as zero or very small, which is a suggestion that you should treat them as fixed.
Boliang Guo posted on Wednesday, October 01, 2008 - 7:42 am
for multilevel ACE model(EX5.18),I wanan test the random loading following your suggestion with following code(knownclass, twolevel random mixture):
%C#2% ! no modeling seting I randomly simulated 22 dataset(mcex5.18 code with variable population value) and apend the dataset to one big dataset, var(a), var(c) var(e) are 0.12 0.1 0.09 among population value. if I run above code, mplus reported: THE ESTIMATED WITHIN COVARIANCE MATRIX IN CLASS 1 COULD NOT BE INVERTED. COMPUTATION COULD NOT BE COMPLETED IN ITERATION 1. CHANGE YOUR MODEL AND/OR STARTING VALUES.
THE MODEL ESTIMATION DID NOT TERMINATE NORMALLY DUE TO AN ERROR IN THE COMPUTATION. CHANGE YOUR MODEL AND/OR STARTING VALUES. I use the mean of population value as starting value, what is my problem, please? I tested the data with single group analysis using both 5.18 code and knowclass mixture code, the results are exactly same, why I could not get the random loadings here with above code? thanks.
The way you specify the model, I think there is no e variance on the Within and you have already fixed the y residual variance at zero. This would cause the error message. You can either not have random slopes for e, or you can use the asterisk Mplus construction that allows both within and between level variance:
s* | y on e;
Boliang Guo posted on Wednesday, October 01, 2008 - 8:52 am