You are here

Help in understanding notation for NO-GROWTH MODEL (OpenMx) and ERROR message

5 posts / 0 new
Last post
Aivil's picture
Offline
Joined: 03/14/2019 - 09:44
Help in understanding notation for NO-GROWTH MODEL (OpenMx) and ERROR message

Hello,
I´m having a hard time understanding the OpenMx notation from this handbook "Growth Modeling" (Grimm, Ram & Estabrook, 2017).

The authors compare the script from MPlus and OpenMx with regard to the specification of a no-growth model (attached as pics). While in Mplus is pretty straightforward, I don´t understand why the latent factor variance (psi_11) and the indicators residual variances are set at 80 and 60 respectively in the OpenMx script.

As we are estimating a no-growth model, why don´t we simply put a 1 to express the fact that these parameters are fixed? Where do these values come from??

In addition, I have tried running this model on my data with exactly the same code just changing the names of variables.... and I obtain this error message... does anybody know why??

Error: Nice try, you need to add '2' to either manifestVars or latentVars before you can use them in a path.

MANY THANKS

Ryne's picture
Offline
Joined: 07/31/2009 - 15:12
Hi Aivil,

Hi Aivil,

The variance terms you're talking about represent the intercept and residual variances. While no growth is being modeled, individuals are free to vary in their initial or overall level. The highlighted portion of the code describes the variance term for the intercept (eta1) and the residual variances for the seven math items. We constrain the residual variance to be constant over time by giving all the residual variance terms the same label ('th').

We don't need to constrain the slope factors to anything because we omit them from the model! Rather than create a slope factor only to make its mean and variance zero, we just leave it out entirely. The entire model is a single latent intercept factor and residual variance terms.

The 80s and 60s are the starting values for those parameters. We think that the variance in intercepts is 80 and residual variance is 60.

Without seeing your code, it looks like number 2 got put some place where OpenMx was expected a variable name, like a 'from' or 'to' argument in an mxPath statement.

Does that answer your question?

Thanks,
Ryne

Aivil's picture
Offline
Joined: 03/14/2019 - 09:44
Thank you so much for your super fast reply!!!!!!

Hello Ryne,
Thank you so much for your time and your immediate reply.
Yes, it makes more sense now. I just have an additional question: is there a reason why the authors have fixed the starting values at 80 and 60? I understand that they represent the variance in intercepts and residual variances, but why 80 and 60 exactly?

I will copy the code here, I just naively copy pasted the one from the book and then changed it based on my data... Sorry I am a newbie in OpenMx

trial.model <- mxModel('No Growth, Path Specification',
                       type='RAM', mxData(observed=dfwide_prova, type='raw'),
                       manifestVars=c( 'depression_scale_2','depression_scale_3',
                                       'depression_scale_4','depression_scale_5',
                                       'depression_scale_6','depression_scale_7',
                                       'depression_scale_8'),latentVars= "eta_1",
                       # variance paths
                       mxPath(from=c('eta_1','depression_scale_2','depression_scale_3',
                                      'depression_scale_4','depression_scale_5',
                                      'depression_scale_6',
                                      'depression_scale_7','depression_scale_8',
                              arrows=2, free=TRUE, values=c(80, 60, 60, 60, 60, 60, 60, 60),
                              labels=c('psi_11', 'th', 'th', 'th', 'th', 'th', 'th', 'th'))),
                       # factor loadings
                       mxPath(from='eta_1',to=c('depression_scale_2','depression_scale_3',
                                                 'depression_scale_4','depression_scale_5',
                                                 'depression_scale_6',
                                                 'depression_scale_7','depression_scale_8'),
                              arrows=1, free=FALSE, values=1),
                       # means and intercepts
                       mxPath(from='one', to='eta_1',
                              arrows=1, free=TRUE, values=40, labels='alpha_1')
                       )# close model

Error: Nice try, you need to add '2' to either manifestVars or latentVars before you can use them in a path.

Thanks!!!!!!!

AdminRobK's picture
Offline
Joined: 01/24/2014 - 12:15
close parenthesis

You need a closing parenthesis in this call to c():

# variance paths
                       mxPath(from=c('eta_1','depression_scale_2','depression_scale_3',
                                      'depression_scale_4','depression_scale_5',
                                      'depression_scale_6',
                                      'depression_scale_7','depression_scale_8',
Aivil's picture
Offline
Joined: 03/14/2019 - 09:44
Starting values

Thank you so much, now it works.

In the meantime, I have read Ryne´s post about setting starting values (https://openmx.ssri.psu.edu/thread/1366) but I still don´t get why in the example from the book they have been set to 80 and 60.

Thanks again