tests/testthat/test-openmx-lavaan.R

#context("Test equivalence of lavaan and OpenMx results in a simple model")

skip_on_cran()

library(semtree)
library(lavaan)
library(OpenMx)

set.seed(1808)

Data <- data.frame(y = c(rnorm(150, mean = -1), rnorm(150, mean = 1)),
                   z = sort(rnorm(300)))

m_lav <- '
y ~~ y
y ~ 1
'

####Testing semtree with lavaan models ####
fit_lav <- lavaan(model = m_lav, data = Data)

tree_lav <- semtree::semtree(model = fit_lav, data = Data,
                             control = semtree.control(use.maxlm = TRUE, method = "naive"))


tree_lav <- semtree::semtree(model = fit_lav, data = Data)


plot(tree_lav)



m_mx <- mxModel(manifestVars = "y", type = "RAM",
mxData(observed = Data, type = "raw"),
mxPath(from = "y", arrows = 2, free = TRUE, values = 1, labels = "sigma2"),
mxPath(from = "one", to = "y", arrows = 1, free = TRUE, values = 0, labels = "mu"))

fit_mx <- mxTryHard(model = m_mx)

tree_mx <- semtree::semtree(model = fit_mx, data = Data,
control = semtree.control(use.maxlm = TRUE, method = "naive"))
plot(tree_mx)

test_that("results are identical", {
  expect_equal(tree_mx$rule, tree_lav$rule)
})

Try the semtree package in your browser

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

semtree documentation built on Nov. 26, 2023, 5:07 p.m.