Strictly Positive SB scaled chi-square in lavaan?

340 views
Skip to first unread message

Garett Howardson

unread,
Jun 20, 2014, 10:34:50 AM6/20/14
to lav...@googlegroups.com
Hi everyone, 

I'm wondering if there is a way to get the strictly positive Satorra-Bentler scaled chi-square difference in lavaan (0.5-16)? 

I'm trying to compare two CFAs each with four factors. The unrestricted model freely estimates the correlation between all four factors; the restricted model fixes two to be correlated -1.0 and does the same for the other two factors. The problem is that when I try to use the anova() function, I'm told that one of the scaling parameters is negative. This appears to be the: sf1*df1-df0*sf0 where sf = scaling factor and df = degrees of freedom, 1 is the restricted model and 0 is the unrestricted model. 

The error message I receive says to try the anova() function using the argument "SB.classic=FALSE." However, this throws another error: "Error in lavTestLRT(object = object, ..., SB.classic = TRUE, SB.H0 = FALSE,  :formal argument "SB.classic" matched by multiple actual arguments." If I call the lavTestLRT() function directly and accept the defaults I get the same warning as the anova() function about negative scaling factors. If I try to use lavTestLRT() and pass SB.classic=FALSE I don't get any errors. However the difference test is using the unscaled chi squares rather than the SB scaled chi-squares. 

I understand that in some situations the scaled difference test will be negative, which seems to be my problem. I know this can be avoided in Mplus by using specific starting values (http://www.statmodel.com/download/BryantSatorraInPressSEM2011.pdf), but I'm wondering if there's any way to do this lavaan. Is this what the SB.classic=FALSE argument is supposed to do? If so, am I doing something wrong to prevent this from happening? 

Thank you, 

Garett


Garett Howardson

unread,
Jun 20, 2014, 11:33:15 AM6/20/14
to lav...@googlegroups.com
Hi everyone, 

Sorry for the second post but I think I resolved my issue. I should have listened to some previous great advice I received on SEMNET from someone whom I know is active on here (thank you Dr. Rigdon!). Instead of fixing correlations between latents to negative unity, I just reverse coded and loaded the items of those factors on the same factor and this changed the scaling factor and fit such that the SB is no longer negative. I guess this had something to do fixing parameters on the boundaries exactly as Dr. Rigdon suggested. Sorry for the unnecessary post!

Garett

yrosseel

unread,
Jun 21, 2014, 9:08:08 AM6/21/14
to lav...@googlegroups.com
On 06/20/2014 04:34 PM, Garett Howardson wrote:
> Hi everyone,
>
> I'm wondering if there is a way to get the strictly positive
> Satorra-Bentler scaled chi-square difference in lavaan (0.5-16)?

Several notes:

1) the error message "formal argument "SB.classic" matched by multiple
actual arguments.", is a bug in lavaan 0.5-16 (and already fixed in the
dev version); the work around is to call lavTestLRT() directly, with the
SB.classic=FALSE option

2) the SB.classic=FALSE option switches to the 'original' approach to
compute a scaled difference test, as described in Satorra (2000) (see
?lavTestLRT for the full reference). This will always lead to a positive
chi-square test statistic

3) "However the difference test is using the unscaled chi squares rather
than the SB scaled chi-squares.": this is perfectly ok: it is the
difference between the unscaled chi-square statistics that is 'scaled'
in the Satorra (2000) approach, NOT the difference between the scaled
test statistics.

4) The approach using starting values etc (as described in eg
BryantSatorraInPressSEM2011.pdf) is not needed if you are using
SB.classic=FALSE

Yves.



Reply all
Reply to author
Forward
0 new messages