I want to use the reliability()
function from package semTools
on the output from sem()
(package lavaan
).
I'm using the function like this:
reliability(fit, return.total = TRUE, dropSingle = FALSE, omit.imps = c("no.conv", "no.se"))
But I'm getting the following warning:
Higher-order factors were ignored.
The output shows the value of only three latent variables:
VOR DID ANT
alpha 0.7144851 0.7303742 0.7381195
omega 0.7317086 0.7474582 0.7590928
omega2 0.7317086 0.7474582 0.7590928
omega3 0.7428142 0.7558317 0.7597882
avevar 0.3642473 0.3856845 0.4598487
My model, however, has many more variables. Here is the output generated from the sem()
model created with lavaan
:
Latent Variables:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
CPT =~
CPT2 1.000 0.486 0.570
CPT3 1.270 0.239 5.312 0.000 0.618 0.840
CPT4 0.897 0.218 4.121 0.000 0.436 0.518
ANT =~
ANT1 1.000 0.399 0.564
ANT4 1.596 0.356 4.486 0.000 0.636 0.737
ANT3 1.068 0.291 3.667 0.000 0.426 0.494
ROL =~
ROL1 1.000 0.686 0.841
ROL2 0.992 0.120 8.300 0.000 0.681 0.761
ROL3 0.999 0.117 8.572 0.000 0.686 0.781
ROL4 0.794 0.113 7.009 0.000 0.545 0.664
SET =~
SET1 1.000 0.613 0.571
SET2 1.185 0.220 5.382 0.000 0.726 0.809
SET3 1.081 0.207 5.220 0.000 0.663 0.747
SET4 0.989 0.216 4.578 0.000 0.606 0.600
CTO =~
CTO1 1.000 0.903 0.752
CTO2 0.878 0.145 6.037 0.000 0.793 0.687
CTO3 1.005 0.155 6.482 0.000 0.907 0.772
RWD =~
RWD1 1.000 0.831 0.831
RWD2 1.054 0.097 10.878 0.000 0.876 0.911
RWD3 1.025 0.099 10.373 0.000 0.852 0.863
VOR =~
VOR1 1.000 0.281 0.383
VOR2 2.107 0.665 3.170 0.002 0.592 0.605
VOR3 1.994 0.615 3.245 0.001 0.560 0.653
VOR4 1.845 0.578 3.193 0.001 0.518 0.619
VOR5 1.968 0.603 3.264 0.001 0.553 0.667
DID =~
DID1 1.000 0.447 0.667
DID2 1.250 0.191 6.530 0.000 0.559 0.804
DID3 1.176 0.187 6.302 0.000 0.526 0.759
DID4 0.969 0.172 5.632 0.000 0.433 0.658
DID5 0.550 0.224 2.453 0.014 0.246 0.268
ABT =~
ABT1 1.000 0.701 0.703
ABT2 1.321 0.195 6.760 0.000 0.926 0.809
ABT3 0.578 0.135 4.291 0.000 0.405 0.475
ABT4 0.864 0.165 5.248 0.000 0.606 0.589
EMT =~
VOR 1.000 0.666 0.666
DID 1.672 0.602 2.778 0.005 0.699 0.699
ABT 3.372 1.159 2.909 0.004 0.900 0.900
Here is the SEM model I'm using to generate latent variables:
modelnew <- '
CPT =~ CPT2 + CPT3 + CPT4
ANT =~ ANT1 + ANT4 + ANT3
ROL =~ ROL1 + ROL2 + ROL3 + ROL4
SET =~ SET1+SET2+SET3+SET4
CTO =~ CTO1+CTO2+CTO3
RWD =~ RWD1+RWD2+RWD3
VOR =~ VOR1 + VOR2 + VOR3 +VOR4 + VOR5
DID =~ DID1 +DID2 +DID3 +DID4 +DID5
ABT =~ ABT1 +ABT2 +ABT3 +ABT4
EMT =~ VOR + DID + ABT
CPT ~~ EMT
ROL ~~ EMT
ANT ~~ EMT
CPT ~~ SET + CTO + RWD
ANT ~~ SET + CTO + RWD
ROL ~~ SET + CTO + RWD
'
How do I get the AVE and Omega values of all the latent variables without ignoring Higher-order factors?
Your model is a higher-order model since it uses latent variables (
VOR
DID
andABT
) as dependent ones (see lineEMT =~ VOR + DID + ABT
).This is what your model looks like when plot it with function
semPaths()
in packagesemPlot
:Because
reliability()
can only handle one factor, it ignores the upper variables (the 'higher-order factor') of your model.Luckily, there's a solution for that. Just use function
reliabilityL2()
from semTools:This should give you the Omega for the missing variables.