Fixing the variance of ordered manifest variables

55 views
Skip to first unread message

Joseph Watson

unread,
Feb 11, 2019, 8:20:25 AM2/11/19
to lavaan

Hi all,


One component of my SEM model features a latent variable formed of three binary manifest variables.


As my manifest variables are binary, I am required to declare them as ordered to lavaan (thereby causing the model to default to the DWLS estimator). (I believe that I must do this as these manifest variables are endogenous – they have a direct cause/arrows pointing into them!) The model is created in the following manner:


ctr.model <- 'exp_c =~ pri_Child_Char_Rec6 + pri_Child_Char_Rec5 + pri_Child_Char_Rec4'


ctr.fit <- cfa(model = ctr.model, data = Uwezo6plus_primary, std.lv = T, ordered = c("pri_Child_Char_Rec4", "pri_Child_Char_Rec5", "pri_Child_Char_Rec6"))


The model produces the following warning message: In lav_object_post_check(object) :
  lavaan WARNING: some estimated ov variances are negative
– this concerns the manifest variable: pri_Child_Char_Rec6


up 1.PNG

...

up 2.PNG


I attempt to fix the variance of the negatively estimated manifest variable by calculating its variance (using var) and then using the output in the model:


ctr.model <- 'exp_c =~ pri_Child_Char_Rec6 + pri_Child_Char_Rec5 + pri_Child_Char_Rec4
pri_Child_Char_Rec6 ~~ 0.06291843*pri_Child_Char_Rec6'


ctr.fit <- cfa(model = ctr.model, data = Uwezo6plus_primary, std.lv = T, ordered = c("pri_Child_Char_Rec4", "pri_Child_Char_Rec5", "pri_Child_Char_Rec6"))


Fixing variance in this manner does not work (unless I do not declare manifest variables as ordered), so I instead set the parameters of two manifest variables to be equal to each other:


ctr.model <- 'exp_c =~ a*pri_Child_Char_Rec6 + a*pri_Child_Char_Rec5 + pri_Child_Char_Rec4'


ctr.fit <- cfa(model = ctr.model, data = Uwezo6plus_primary, std.lv = T, ordered = c("pri_Child_Char_Rec4", "pri_Child_Char_Rec5", "pri_Child_Char_Rec6"))


This works – no variances are negative and the model runs with no warnings.


My questions are:

-          Is there any way to fix variance within an ordered model?

-          If no, is setting the parameters of two manifest variables to be equal an OK way of dealing with the problem?


Thanks again for any help - I could not find the answer in this forum. And huge apologies if I have made an incorrect assumption that the manifest variables should be declared as ordered! Please let me know if this is the case.


Joe

Terrence Jorgensen

unread,
Feb 19, 2019, 2:55:48 PM2/19/19
to lavaan

-          Is there any way to fix variance within an ordered model?


You have to set parameterization="theta" so that residual variances are model parameters, which can be fixed/free.


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

Message has been deleted

Joseph Watson

unread,
Feb 20, 2019, 1:56:34 PM2/20/19
to lavaan
Thank you so much - this works. 

(Edit - initial response provided an example with an error - this has now been deleted.)
Reply all
Reply to author
Forward
0 new messages