library(lavaan)
library(semPlot)
library(semptools)
# Multigroup CFA
model <- "visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9"
fit <- cfa(model = model, data = HolzingerSwineford1939, group = "school")
plot(1)
p0s <- semPaths(object = fit,
thresholds = FALSE,
whatLabels = "std",
intercepts = FALSE,
exoCov = TRUE,
style = "ram",
curvePivot = TRUE,
edge.color = "black",
DoNotPlot = TRUE)
p1s <- lapply(p0s,
set_cfa_layout,
loading_position = .9)
est <- parameterEstimates(fit, standardized = TRUE)
std <- standardizedSolution(fit)
id <- c(37:45)
p_se_chk <- paste0(formatC(std$est.std[id], digits = 2, format = "f"),
" (",
formatC(est$se[id], digits = 2, format = "f"),
")")
alphas <- c("*" = .05, "**" = .01, "***" = .001)
alphas_sorted <- sort(alphas, decreasing = FALSE)
tmp <- sapply(est$pvalue[id], function(x) {
ind <- which(x < alphas_sorted)[1]
ifelse(is.na(ind), "", names(ind[1]))
})
p_sig_chk <- paste0(formatC(std$est.std[id], digits = 2, format = "f"),
tmp)
test_that(
"mark_se and mark_sig", {
p2s_se <- mark_se(p1s,
object = fit)
p2s_sig <- mark_sig(p1s,
object = fit)
expect_identical(p2s_se[[2]]$graphAttributes$Edges$labels[1:9],
p_se_chk)
expect_identical(p2s_sig[[2]]$graphAttributes$Edges$labels[1:9],
p_sig_chk)
})
# Multigroup Path Model
n <- nrow(pa_example)
pa_example$group <- rep(c("gp2", "gp1"), times = n / 2)
mod_pa <-
'x1 ~~ x2
x3 ~ x1 + x2
x4 ~ x1 + x3
'
fit_pa <- lavaan::sem(mod_pa, pa_example,
group = "group")
m <- matrix(c("x1", NA, NA, NA,
NA, "x3", NA, "x4",
"x2", NA, NA, NA), byrow = TRUE, 3, 4)
plot(1)
p_pa <- semPaths(fit_pa, whatLabels = "est",
sizeMan = 10,
edge.label.cex = 1.15,
layout = m,
intercepts = FALSE,
DoNotPlot = TRUE)
est <- parameterEstimates(fit_pa)
id <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 1) + 13
p_pa_se_chk <- paste0(formatC(est$est[id], digits = 2, format = "f"),
" (",
formatC(est$se[id], digits = 2, format = "f"),
")")
alphas <- c("*" = .05, "**" = .01, "***" = .001)
alphas_sorted <- sort(alphas, decreasing = FALSE)
tmp <- sapply(est$pvalue[id], function(x) {
ind <- which(x < alphas_sorted)[1]
ifelse(is.na(ind), "", names(ind[1]))
})
p_pa_sig_chk <- paste0(formatC(est$est[id], digits = 2, format = "f"),
tmp)
test_that(
"mark_se and mark_sig", {
p_pa_se <- mark_se(p_pa, fit_pa)
p_pa_sig <- mark_sig(p_pa, fit_pa)
expect_identical(p_pa_se[[2]]$graphAttributes$Edges$labels,
p_pa_se_chk)
expect_identical(p_pa_sig[[2]]$graphAttributes$Edges$labels,
p_pa_sig_chk)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.