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 |
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}≤ft(ΛΨΛ^\prime\right)\bold{1}}{\bold{1}^\prime \textrm{diag}≤ft(\hat{Σ}\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. 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.