lavaan ERROR: wrong number of arguments in modifier ()

1,198 views
Skip to first unread message

jessica...@socialneuro.psych.utoronto.ca

unread,
Aug 4, 2016, 1:36:42 PM8/4/16
to lavaan
Hello everyone,

I am trying to specify a model and I keep getting an error and I don't understand the errors. I am not sure how I need to fix my model to get it to run. Any help would be great. Here is the model I am trying to run:

model.2 <- '
fear  =~ fear_dur + fear_intensity + fear_freq 
anger =~ anger_dur + anger_intensity + anger_freq 
sad   =~ sad_dur + sad_intensity + sad_freq 
calm  =~ calm_dur + calm_intensity + calm_freq  
happy =~ happy_dur + happy_intensity + happy_freq 
anxiety  =~ anxiety_dur + anxiety_intensity + anxiety_freq
hope =~ hope_dur + hope_intensity + hope_freq
pos_intensity =~ v1*happy_intensity + v1*hope_intensity +  v1*calm_intensity
pos_dur =~ v2*happy_dur + v2*hope_dur +  v2*calm_dur
pos_freq =~ v3*happy_freq + v3*hope_freq +  v3*calm_freq
neg_intensity =~ v4*anger_intensity + v4*sad_intensity +  v4*anxiety_intensity + v4*fear_intensity
neg_dur =~ v5*anger_dur + v5*sad_dur + v5*anxiety_dur + v5*fear_dur
neg_freq =~ v6*anger_freq + v6*sad_freq + v6*anxiety_freq + v6*fear_freq
pos_freq ~~ neg_intensity
pos_freq ~~ neg_freq
pos_freq ~~ neg_dur
pos_intensity ~~ neg_intensity
pos_intensity ~~ neg_freq
pos_intensity ~~ neg_dur
pos_dur ~~ neg_intensity
pos_dur ~~ neg_dur
pos_dur ~~ neg_freq
pos_dur ~~ pos_intensity
pos_dur ~~ pos_freq
pos_freq ~~ pos_intensity
neg_dur ~~ neg_intensity
neg_dur ~~ neg_freq
neg_freq ~~ neg_intensity
fear  ~~ 0*pos_dur
fear  ~~ 0*pos_intensity
fear  ~~ 0*pos_freq
fear  ~~ 0*neg_dur
fear  ~~ 0*neg_intensity
fear  ~~ 0*neg_freq
anger  ~~ 0*pos_dur
anger  ~~ 0*pos_intensity
anger  ~~ 0*pos_freq
anger  ~~ 0*neg_dur
anger  ~~ 0*neg_intensity
anger  ~~ 0*neg_freq
sad  ~~ 0*pos_dur
sad  ~~ 0*pos_intensity
sad  ~~ 0*pos_freq
sad  ~~ 0*neg_dur
sad  ~~ 0*neg_intensity
sad  ~~ 0*neg_freq
calm  ~~ 0*pos_dur
calm  ~~ 0*pos_intensity
calm  ~~ 0*pos_freq
calm  ~~ 0*neg_dur
calm  ~~ 0*neg_intensity
calm  ~~ 0*neg_freq
happy  ~~ 0*pos_dur
happy  ~~ 0*pos_intensity
happy  ~~ 0*pos_freq
happy  ~~ 0*neg_dur
happy  ~~ 0*neg_intensity
happy  ~~ 0*neg_freq
anxiety  ~~ 0*pos_dur
anxiety  ~~ 0*pos_intensity
anxiety  ~~ 0*pos_freq
anxiety  ~~ 0*neg_dur
anxiety  ~~ 0*neg_intensity
anxiety  ~~ 0*neg_freq
hope  ~~ 0*pos_dur
hope  ~~ 0*pos_intensity
hope  ~~ 0*pos_freq
hope  ~~ 0*neg_dur
hope  ~~ 0*neg_intensity
hope  ~~ 0*neg_freq
neg_dur ~~ 0*neg_intensity
neg_dur ~~ 0*neg_freq
neg_freq ~~ 0*neg_intensity
pos_dur ~~ 0*pos_intensity
pos_dur ~~ 0*pos_freq
pos_freq ~~ 0*pos_intensity
'

And here is the error.

Error in lavaanify(model = FLAT, meanstructure = lavoptions$meanstructure,  : 
  lavaan ERROR: wrong number of arguments in modifier () of element NANANA
In addition: Warning message:
In lav_partable_flat(FLAT, meanstructure = meanstructure, int.ov.free = int.ov.free,  :
  duplicated elements in model syntax have been ignored: c("neg_intensity", "neg_dur", "neg_intensity", "pos_intensity", "pos_dur", "pos_intensity")c("~~", "~~", "~~", "~~", "~~", "~~")c("neg_dur", "neg_freq", "neg_freq", "pos_dur", "pos_freq", "pos_freq")

Thank you in advance!

Terrence Jorgensen

unread,
Aug 6, 2016, 3:23:26 PM8/6/16
to lavaan
Not sure without seeing the rest of your script, but if you have a multigroup model, then you need to repeat the parameter label/value for each group if you want them to be the same value in each group.  For example, in a 3-group model:

fear  ~~ c(0, 0, 0)*pos_dur

I usually see the "wrong number of arguments in modifier" message if I don't use the right number of groups.

Terrence D. Jorgensen
Postdoctoral Researcher, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam

jahug...@gmail.com

unread,
Aug 6, 2016, 5:29:03 PM8/6/16
to lavaan
Hi Terrence, 

Thank you very much for getting back to me. I don't gave more than one group in my experiment. I simplified some of the syntax and am getting different errors based on the order of the syntax, which shouldn't  be the case.

For example using the following syntax in my model:

neg_intensity ~~ 0*neg_freq        gives me the same error as previously stated. But if I write it like this:

neg_freq ~~ 0*neg_intensity

It gives me an error that there is a duplicate model element, which there isn't. Below is my simplified model that I ran:


model.2 <- '
fear  =~ fear_dur + fear_intensity + fear_freq 
anger =~ anger_dur + anger_intensity + anger_freq 
sad   =~ sad_dur + sad_intensity + sad_freq 
calm  =~ calm_dur + calm_intensity + calm_freq  
happy =~ happy_dur + happy_intensity + happy_freq 
anxiety  =~ anxiety_dur + anxiety_intensity + anxiety_freq
hope =~ hope_dur + hope_intensity + hope_freq
pos_intensity =~ v1*happy_intensity + v1*hope_intensity +  v1*calm_intensity
pos_dur =~ v2*happy_dur + v2*hope_dur +  v2*calm_dur
pos_freq =~ v3*happy_freq + v3*hope_freq +  v3*calm_freq
neg_intensity =~ v4*anger_intensity + v4*sad_intensity +  v4*anxiety_intensity + v4*fear_intensity
neg_dur =~ v5*anger_dur + v5*sad_dur + v5*anxiety_dur + v5*fear_dur
neg_freq =~ v6*anger_freq + v6*sad_freq + v6*anxiety_freq + v6*fear_freq
pos_freq ~~ neg_intensity + neg_freq + neg_dur
pos_intensity ~~ neg_intensity + neg_freq + neg_dur
pos_dur ~~ neg_intensity + neg_dur + neg_freq
pos_dur ~~ pos_intensity + pos_freq
pos_freq ~~ pos_intensity
neg_dur ~~ neg_intensity + neg_freq
neg_freq ~~ neg_intensity
fear  ~~ 0*pos_dur +  0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
anger  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
sad  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
calm  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
happy  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
anxiety  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
hope  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
neg_dur ~~ 0*neg_intensity + 0*neg_freq 
neg_intensity ~~ 0*neg_freq 
pos_dur ~~ 0*pos_intensity + 0*pos_freq
pos_intensity ~~ 0*pos_freq 
'

Terrence Jorgensen

unread,
Aug 7, 2016, 12:29:57 PM8/7/16
to lavaan
You still didn't provide your full R script, but I highlighted the duplicated elements I noticed in your model syntax.

model.2 <- '
           ## factor loadings ...  
pos_freq ~~ neg_intensity + neg_freq + neg_dur
pos_intensity ~~ neg_intensity + neg_freq + neg_dur
pos_dur ~~ neg_intensity + neg_dur + neg_freq
pos_dur ~~ pos_intensity + pos_freq
pos_freq ~~ pos_intensity
neg_dur ~~ neg_intensity + neg_freq
neg_freq ~~ neg_intensity
fear  ~~ 0*pos_dur +  0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
anger  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
sad  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
calm  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
happy  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
anxiety  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
hope  ~~ 0*pos_dur + 0*pos_intensity + 0*pos_freq + 0*neg_dur + 0*neg_intensity + 0*neg_freq
neg_dur ~~ 0*neg_intensity + 0*neg_freq 
neg_intensity ~~ 0*neg_freq 
pos_dur ~~ 0*pos_intensity + 0*pos_freq
pos_intensity ~~ 0*pos_freq 
'

The first time you specify the highlighted parameters, you freely estimate them.  The second time you specify them, you fix them to zero.

jahug...@gmail.com

unread,
Aug 7, 2016, 12:41:19 PM8/7/16
to lavaan
Hi Terrence,

Yes, thank you for catching that. I thought that would cause a problem in the model, so I left it out and then was told to put it back in. Thank you for highlighting that issue again. My script is pretty limited, just doing a basic cfa:

fit <- cfa(model.2, data = MTurk)
summary(fit, fit.measures = TRUE)

Yves Rosseel

unread,
Aug 29, 2016, 4:03:51 AM8/29/16
to lav...@googlegroups.com

> And here is the error.
>
> Error in lavaanify(model = FLAT, meanstructure =
> lavoptions$meanstructure, :
> lavaan ERROR: wrong number of arguments in modifier () of element NANANA

The error message is a result of the duplicated elements, as listed in
the warning message:

> In addition: Warning message:
> In lav_partable_flat(FLAT, meanstructure = meanstructure, int.ov.free =
> int.ov.free, :
> duplicated elements in model syntax have been ignored:
> c("neg_intensity", "neg_dur", "neg_intensity", "pos_intensity",
> "pos_dur", "pos_intensity")c("~~", "~~", "~~", "~~", "~~",
> "~~")c("neg_dur", "neg_freq", "neg_freq", "pos_dur", "pos_freq", "pos_freq")

Removing the duplicated elements from the model syntax will fix it. In
dev 0.5-21, the list of duplicated elements is much better readable, and
the error message is avoided.

Yves.

Jessica Hughes

unread,
Aug 31, 2016, 7:19:23 AM8/31/16
to lav...@googlegroups.com
Great, thank you for the suggestion! It worked.

Jessica A. Hughes, M.A.
Ph.D. Candidate | University of Toronto
Department of Psychology
Computational Affective Neuroscience Lab





--
You received this message because you are subscribed to a topic in the Google Groups "lavaan" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/lavaan/EVxo-24ozz8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to lavaan+unsubscribe@googlegroups.com.
To post to this group, send email to lav...@googlegroups.com.
Visit this group at https://groups.google.com/group/lavaan.
For more options, visit https://groups.google.com/d/optout.

franz...@gmail.com

unread,
Apr 18, 2018, 5:35:03 AM4/18/18
to lavaan
Hello,

I receive the same message but only when I write as many arguments in c() as I have groups (in my case 50). If I write c(a,a) which would be two groups, there is no error message. So I was wondering what is wrong?

Thanks in advance!

Franzi

Terrence Jorgensen

unread,
Apr 20, 2018, 9:37:13 AM4/20/18
to lavaan
I receive the same message but only when I write as many arguments in c() as I have groups (in my case 50). 

You only get an error when the number of modifiers correctly matches the number of groups?  That seems strange. Is missing data preventing any groups from being represented in the analysis?  Does this happen in the latest development version?

install.packages("lavaan", repos="http://www.da.ugent.be", type="source")

With 50 groups, perhaps you should consider a multilevel rather than multigroup model.

franz...@gmail.com

unread,
Apr 24, 2018, 4:12:58 AM4/24/18
to lavaan
Thank you Terrence! Yes, indeed it works much better with a multilevel approach.
Reply all
Reply to author
Forward
0 new messages