G Theory and SEM PreviousNext
Mplus Discussion > Confirmatory Factor Analysis >
 J.D. Haltigan posted on Monday, November 13, 2006 - 9:05 am
Hi all,
I have been working on trying to reproduce estimation of variance components based on a published example using LISREL notation. The original publication was completed Marcoulides and basically I am having a bit of trouble with the syntax to generate the variance component estimates he obtained---or---it may be that I am not interpreting the output I do get correctly. Has anyone used CFA models to generate estimates of variance components? Any thoughts or input would be welcomed.

 Linda K. Muthen posted on Monday, November 13, 2006 - 11:26 am
Have you tranlated the LISREL input into the Mplus language? Lambda is BY etc. This would be where I would start. If you can't do this, send the LISREL input and output and the input and data you are using for Mplus to support@statmodel.com.
 J.D. Haltigan posted on Monday, November 13, 2006 - 11:45 am
thanks for your reply. I did send the requested info a few days ago with my current MPlus language. Below is my current input (commands) and I used the TECH 4 output rather than sampstat as the original output had pointed me in this direction...I am wondering if a negative estimate of variance will do this, because in G, one thing we typically do is set them equal to 0. Nevertheless, I should have obtained what Marcoulides did and did not (but I believe I am close). The design is 4 raters on 2 occasions rating the job difficulty of 27 jobs.

(type is covar, # observasations = 216)

Names are R101 R102 R201 R202 R301 R302 R401 R402;

!Analysis: !Type =;
!Iterations= 10000;
!H1Iterations= 10000;

PERSON BY R101 R102 R201 R202 R301 R302 R401 R402;
RATER1 BY R101 R102;
RATER2 BY R201 R202;
RATER3 BY R301 R302;
RATER4 BY R401 R402;
OCCVAR1 BY R101 R201 R301 R401;
OCCVAR2 BY R102 R202 R302 R402;
E101 BY R101;
E102 BY R102;
E201 BY R201;
E202 BY R202;
E301 BY R301;
E302 BY R302;
E401 BY R401;
E402 BY R402;

E101 E102 E201 E202 E301 E302 E401 E402 (3);

Output: TECH4;
 J.D. Haltigan posted on Monday, November 13, 2006 - 12:03 pm
LISREL SCRIPT appears like this from the original paper


VA 1.0 LX(1,1) LX(1,2) LX(1,6)
VA 1.0 LX(2,1) LX(2,3) LX(2,6)
VA 1.0 LX(3,1) LX(3,4) LX(3,6)
VA 1.0 LX(4,1) LX(4,5) LX(4,6)
VA 1.0 LX(5,1) LX(5,2) LX(5,7)
VA 1.0 LX(6,1) LX(6,3) LX(6,7)
VA 1.0 LX(7,1) LX(7,4) LX(7,7)
VA 1.0 LX(8,1) LX(8,5) LX(8,7)
 Linda K. Muthen posted on Tuesday, November 14, 2006 - 7:35 am
The matrix of factor loadings is all fixed. This is not reflected in your Mplus language. The lambda matrix specified in LISREL is:

f1 f2 f3 f4 f5 f6 f7
y1 1 1 1
y2 1 1 1
y3 1 1 1
y4 1 1 1
y5 1 1 1
y6 1 1 1
y7 1 1 1
y8 1 1 1

I will get you started by showing the specification for f1 and f2 in Mplus:

f1 BY y1-y8@1;
f2 BY y1@1 y5@1;

In Mplus, exogenous factors are correlated as the default so you would need to fix those to zero:

f1 WITH f2@0;

I don't know what you are doing with the E BY statements and I don't see any equalities in the LISREL set up.
 J.D. Haltigan posted on Wednesday, November 15, 2006 - 12:22 pm
Very helpful Linda, thank you; I was able to get the model to run and replicate the original results for var comps.
 J.D. Haltigan posted on Monday, November 27, 2006 - 7:12 pm
After running the test model above using a covariance matrix, I am attempting to replicate the same procedure using individual data from a prior data set I analyzed using the traditional ANOVA-based method of var. comp. estimation.

This new data set is not a covariance, but rather is in the form of individual observations.

There are 19 variables which are the 19 raters who rate 13 infants. Thus, there are 13 * 19 observed variables. When I specify the model in the input, I am not sure how to indicate that the observed variables are 247 and not 13; that is, when I run the model, it doesn't run due to the fact that it perceives 19 variables on 13 observations, and not 247. It does not seem to matter if I indicate NOBSERVATIONS=247. What is interesting is that if I use analysis type is missing the model does run and gives me the correct person variance component (which make sense since it is based on a single rater*person observation) but it doesn't provide the other var comps as they should. How do I specify the correct number of observations given the 19 variables mentioned (each rater). I know this is the issue, I am just not sure how to do it since I am now working with individual data and not a correlation or covariance matrix.

Any replies would be helpful.

Thanks much,
 Linda K. Muthen posted on Tuesday, November 28, 2006 - 9:23 am
You would need to have your data in long format for Mplus to see 247 observations. For example,

Rater Infant
1 1
1 .
1 13

You can use DATA WIDETOLONG to rearrange the data.
 J.D. Haltigan posted on Tuesday, November 28, 2006 - 9:30 am
So essentially what I'll be doing is making raters (19) a between-subjects or a row and each infant will become a column?

Going to try this now; regardless, it is irrelevant for G-purposes (I am pretty sure) whether a given variable is between or within per se;
 Linda K. Muthen posted on Tuesday, November 28, 2006 - 1:45 pm
What do the raters rate the infants on? I don't think I understand what your data are. The data set should have rows that represent a combination of rater and infant and the columns should represent whatever the raters are rating the infants on.
 J.D. Haltigan posted on Wednesday, November 29, 2006 - 7:37 am
thanks, I was able to figure it out, but instead of modeling the person variance component I modeled the rater variance component (this was a p x r design). Here is how the data look

Rater SN1 SN2 SN3...SN13
Rater1 xxx xxx xxx...xxxx

Thus, each SN (object rated) is a column with 19 individual ratings. If I were to make the SN's as a single vector and the 19 raters as variables, then I would be modeling the person variance. However, I wasn't sure with 'widetolong' if I could transpose the data set right in Mplus and generate a different structured data set. This is not a huge problem because I can do this in SPSS and then export to a .dat. However, this was a smaller data set and I'd like to work with larger ones in the future...Is there any way raters could be the variable and SN as the index so I could estimate the person variance without having to create a separate data file? Or would 19 variables going across on 13 cases (SN's) be too large?
 Linda K. Muthen posted on Wednesday, November 29, 2006 - 10:50 am
You should be able to use WIDETOLONG. You would need to rearrange the data if you change the unit of observation.
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