Getting modification indices for all but the right variables

70 views
Skip to first unread message

Sercan K

unread,
Mar 24, 2017, 2:22:29 PM3/24/17
to lavaan
Hi,

I'm new with lavaan and confirmatory factor analysis, so I hope this is not a very dumb mistake I'm making. I'm exploring the validity of a 58 ordinal item questionnaire. To this end, I ran a CFA.

TriModel <-  'Boldness =~ TriPM1+TriPM4+TriPM7+TriPM10+TriPM13+TriPM16+TriPM19+TriPM22+TriPM25+TriPM28+TriPM32+TriPM35+TriPM38+TriPM41+TriPM44+TriPM47+TriPM50+TriPM54+TriPM57
              Meanness =~ TriPM2+TriPM6+TriPM8+TriPM11+TriPM14+TriPM17+TriPM20+TriPM23+TriPM26+TriPM29+TriPM33+TriPM36+TriPM39+TriPM40+TriPM42+TriPM45+TriPM48+TriPM52+TriPM55
              Disinhibition =~ TriPM3+TriPM5+TriPM9+TriPM12+TriPM15+TriPM18+TriPM21+TriPM24+TriPM27+TriPM30+TriPM31+TriPM34+TriPM37+TriPM43+TriPM46+TriPM49+TriPM51+TriPM53+TriPM56+TriPM58'

fit<-cfa(TriModel,data=data,std.lv=T, std.ov=T)
modindices(fit)

When I request the modindices, I get values for all but the items that were made to load onto the factors. That is, for Boldness I get mod indices for the items that load on Meanness and Disinhibition. On the other hand, with the CFA example on the lavaan website, which used a similar model,the mod indices were displayed as they should: only for the items that load onto their own factors. What is the difference and how can I fix it?

Kind regards,

Sercan

Note: the same issue happens when data is converted to numeric values.

Terrence Jorgensen

unread,
Mar 26, 2017, 9:09:58 AM3/26/17
to lavaan
I'm exploring the validity of a 58 ordinal item questionnaire.

Wow!  I hope you have a magnificently large sample.

When I request the modindices, I get values for all but the items that were made to load onto the factors. That is, for Boldness I get mod indices for the items that load on Meanness and Disinhibition. On the other hand, with the CFA example on the lavaan website, which used a similar model,the mod indices were displayed as they should: only for the items that load onto their own factors. What is the difference and how can I fix it?

That doesn't make sense.  What you are describing with your own data are what you should see.  Modification indices are (and should be) returned only for parameters that are fixed to zero (i.e., cross-loadings that you do not estimate) because you can't free a parameter that is already freely estimated. And that is what is returned by the lavaan example:

example(modindices, package = "lavaan")

If you are looking for modification indices for equality-constrained estimated parameters, they are not returned by modindices(), but can be investigated using the lavTestScore() function.

HS.model <- '
    visual  =~ x1 + x2 + x3
    textual =~ x4 + x5 + x6
    speed   =~ x7 + x8 + x9
'

fit
<- cfa(HS.model, data = HolzingerSwineford1939,
           
group = "school", group.equal = c("loadings","intercepts"))
lavTestScore
(fit)
## see which constraints are associated with each label
parTable
(fit)


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


Sercan K

unread,
Mar 28, 2017, 12:09:53 PM3/28/17
to lavaan
Hi,

Sample size won't be an issue, I believe. I have 839 people.
Either way, thank you for clarifying. I had interpreted everything the other way around, thinking I had fixed the variables to a certain factor, and therefore should get modindices for that factor. But what had been fixed was that they are not free to load on other factors than their own. Everything makes sense now, thanks!

Regards,

Sercan
Reply all
Reply to author
Forward
0 new messages