AVE | R Documentation |
Calculate average variance extracted (AVE) per factor from lavaan
object
AVE(object, obs.var = TRUE, omit.imps = c("no.conv", "no.se"),
omit.factors = character(0), dropSingle = TRUE, return.df = TRUE)
object |
A lavaan::lavaan or lavaan.mi::lavaan.mi object,
expected to contain only exogenous common factors (i.e., a CFA model).
Cross-loadings are not allowed and will result in |
obs.var |
|
omit.imps |
|
omit.factors |
|
dropSingle |
|
return.df |
|
The average variance extracted (AVE) can be calculated by
AVE = \frac{\bold{1}^\prime
\textrm{diag}\left(\Lambda\Psi\Lambda^\prime\right)\bold{1}}{\bold{1}^\prime
\textrm{diag}\left(\hat{\Sigma}\right) \bold{1}},
Note that this formula is modified from Fornell & Larcker (1981) in the case that factor variances are not 1. The proposed formula from Fornell & Larcker (1981) assumes that the factor variances are 1. Note that AVE will not be provided for factors consisting of items with dual loadings. AVE is the property of items but not the property of factors. AVE is calculated with polychoric correlations when ordinal indicators are used.
numeric
vector of average variance extracted from indicators
per factor. For models with multiple "blocks" (any combination of groups
and levels), vectors may be returned as columns in a data.frame
with additional columns indicating the group/level (see return.df=
argument description for caveat).
Terrence D. Jorgensen (University of Amsterdam; TJorgensen314@gmail.com)
Fornell, C., & Larcker, D. F. (1981). Evaluating structural equation models with unobservable variables and measurement errors. Journal of Marketing Research, 18(1), 39–50. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2307/3151312")}
compRelSEM()
for composite reliability estimates
data(HolzingerSwineford1939)
HS9 <- HolzingerSwineford1939[ , c("x7","x8","x9")]
HSbinary <- as.data.frame( lapply(HS9, cut, 2, labels=FALSE) )
names(HSbinary) <- c("y7","y8","y9")
HS <- cbind(HolzingerSwineford1939, HSbinary)
HS.model <- ' visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ y7 + y8 + y9 '
fit <- cfa(HS.model, data = HS, ordered = c("y7","y8","y9"), std.lv = TRUE)
## works for factors with exclusively continuous OR categorical indicators
AVE(fit) # uses observed (or unconstrained polychoric/polyserial) by default
AVE(fit, obs.var = FALSE)
## works for multigroup models and for multilevel models (and both)
data(Demo.twolevel)
## assign clusters to arbitrary groups
Demo.twolevel$g <- ifelse(Demo.twolevel$cluster %% 2L, "type1", "type2")
model2 <- ' group: type1
level: within
fac =~ y1 + L2*y2 + L3*y3
level: between
fac =~ y1 + L2*y2 + L3*y3
group: type2
level: within
fac =~ y1 + L2*y2 + L3*y3
level: between
fac =~ y1 + L2*y2 + L3*y3
'
fit2 <- sem(model2, data = Demo.twolevel, cluster = "cluster", group = "g")
AVE(fit2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.