tests/testthat/test-check_intercepts.R

library(lavaan)
library(semPlot)

mod_pa <-
  'x1 ~~ x2
   x3 ~  x1 + x2
   x4 ~  x1 + x3
  '
fit_pa <- lavaan::sem(mod_pa, pa_example, meanstructure = TRUE)
m <- matrix(c("x1",   NA,  NA,   NA,
                NA, "x3",  NA, "x4",
              "x2",   NA,  NA,   NA), byrow = TRUE, 3, 4)
p_pa <- semPaths(fit_pa, whatLabels = "est",
           sizeMan = 10,
           edge.label.cex = 1.15,
           style = "ram",
           nCharNodes = 0, nCharEdges = 0,
           DoNotPlot = TRUE)
# mark_se

# Error
test_that(
  "mark_se detects a plot with intercepts",
  expect_error(mark_se(p_pa, fit_pa),
               "have one or more intercepts")
)

# mark_sig

test_that(
  "mark_sig detects a plot with intercepts",
  expect_error(mark_sig(p_pa, fit_pa),
               "have one or more intercepts")
)


# rotate_resid

# Work
# my_rotate_resid_list <- list(list(node = "x3", rotate =  45),
#                              list(node = "x4", rotate = -45),
#                              list(node = "x2", rotate = -90))
# p_pa2 <- rotate_resid(p_pa, my_rotate_resid_list)
# plot(p_pa2)

# set_curve

# Work
# my_curve_list <- list(list(from = "x1", to = "x2", new_curve = -1),
#                     list(from = "x1", to = "x4", new_curve =  1))
# p_pa2 <- set_curve(p_pa, my_curve_list)
# plot(p_pa2)


# set_edge_label_position

# Work
# my_position_list <- list(list(from = "x1", to = "x3", new_position =  .25),
#                          list(from = "x2", to = "x3", new_position =  .25),
#                          list(from = "x1", to = "x4", new_position =  .75))
# p_pa2 <- set_edge_label_position(p_pa, my_position_list)
# plot(p_pa2)

# change_node_label

# Work
# p_pa2 <- change_node_label(p_pa,
#                            list(x1 = "Attitude",
#                                 x2 = "SbjNorm",
#                                 x3 = "Intention",
#                                 x4 = "Behavior"),
#                            label.cex = 1.1)
# plot(p_pa2)

# set_sem_layout

# Work
# mod <-
#   'f1 =~ x01 + x02 + x03
#    f2 =~ x04 + x05 + x06 + x07
#    f3 =~ x08 + x09 + x10
#    f4 =~ x11 + x12 + x13 + x14
#    f3 ~  f1 + f2
#    f4 ~  f1 + f3
#   '
# fit <- lavaan::sem(mod, sem_example, meanstructure = TRUE)
# p <- semPaths(fit, whatLabels="est",
#         sizeMan = 5,
#         node.width = 1,
#         edge.label.cex = .75,
#         style = "ram",
#         mar = c(5, 5, 5, 5))
# indicator_order  <- c("x04", "x05", "x06", "x07",
#                       "x01", "x02", "x03",
#                       "x11", "x12", "x13", "x14",
#                       "x08", "x09", "x10")
# indicator_factor <- c( "f2",  "f2",  "f2",  "f2",
#                        "f1",  "f1",  "f1",
#                        "f4",  "f4",  "f4",  "f4",
#                        "f3",  "f3",  "f3")
# factor_layout <- matrix(c("f1",   NA,   NA,
#                            NA, "f3", "f4",
#                          "f2",   NA,   NA), byrow = TRUE, 3, 3)
# factor_point_to <- matrix(c("left",     NA,      NA,
#                                 NA, "down", "down",
#                             "left",     NA,      NA), byrow = TRUE, 3, 3)
# p2 <- set_sem_layout(p,
#                      indicator_order = indicator_order,
#                      indicator_factor = indicator_factor,
#                      factor_layout = factor_layout,
#                      factor_point_to = factor_point_to)
# plot(p2)

# set_cfa_layout

# Does not work. Warnings.
mod <-
  'f1 =~ x01 + x02 + x03
   f2 =~ x04 + x05 + x06 + x07
   f3 =~ x08 + x09 + x10
   f4 =~ x11 + x12 + x13 + x14
  '
fit <- lavaan::cfa(mod, cfa_example, meanstructure = TRUE)
p <- semPaths(fit, whatLabels="est",
        sizeMan = 3.25,
        node.width = 1,
        edge.label.cex = .75,
        style = "ram",
        mar = c(10, 5, 10, 5),
        DoNotPlot = TRUE)
indicator_order  <- c("x04", "x05", "x06", "x07",
                      "x01", "x02", "x03",
                      "x11", "x12", "x13", "x14",
                      "x08", "x09", "x10")
indicator_factor <- c( "f2",  "f2",  "f2",  "f2",
                       "f1",  "f1",  "f1",
                       "f4",  "f4",  "f4",  "f4",
                       "f3",  "f3",  "f3")
test_that(
  "set_cfa_layout detects a plot with intercepts",
  expect_error(set_cfa_layout(p, indicator_order, indicator_factor),
               "have one or more intercepts")
)

Try the semptools package in your browser

Any scripts or data that you put into this service are public.

semptools documentation built on Oct. 15, 2023, 5:07 p.m.