# Test cases for model identification and fitting functions
# Test that a fully specified model with adequate parameters is correctly identified
test_that("identified model is identified", {
set.seed(5)
expect_output(identifyComponentModel(
A = list(matrix(c(1, .5, .5, 1), 2, 2), matrix(1, 2, 2)),
C = list(matrix(1, 2, 2), matrix(1, 2, 2)),
E = diag(1, 4)
))
expect_true(identifyComponentModel(
A = list(matrix(c(1, .5, .5, 1), 2, 2), matrix(1, 2, 2)),
C = list(matrix(1, 2, 2), matrix(1, 2, 2)),
E = diag(1, 4)
)$identified)
})
# Test for error when a model is underidentified due to insufficient parameters
test_that("underidentified model is unidentified", {
set.seed(5)
expect_false(identifyComponentModel(
A = list(matrix(1, 2, 2)),
C = list(matrix(1, 2, 2)),
E = diag(1, 2)
)$identified)
})
# Test that fitComponentModel returns expected coefficients with valid input data
test_that("fitComponentModel work", {
# Initial example using commented out real data loading
# data(twinData, package = "OpenMx")
# selVars <- c("ht1", "ht2")
# mzData <- subset(twinData, zyg %in% c(1), c(selVars, "zyg"))
# dzData <- subset(twinData, zyg %in% c(3), c(selVars, "zyg"))
# covmat = list(cov(mzData[, selVars], use = "pair"), cov(dzData[, selVars], use = "pair")),
covmat <- list(
matrix(c(
0.004406810, 0.003872128,
0.003872128, 0.004417694
), nrow = 2),
matrix(c(
0.004817455, 0.002051937,
0.002051937, 0.004531923
), nrow = 2)
)
result <- fitComponentModel(
covmat = covmat,
A = list(matrix(1, nrow = 2, ncol = 2), matrix(c(1, 0.5, 0.5, 1), nrow = 2, ncol = 2)),
C = list(matrix(1, nrow = 2, ncol = 2), matrix(1, nrow = 2, ncol = 2)),
E = list(diag(1, nrow = 2), diag(1, nrow = 2))
)
expect_equal(result$coefficients, c(compmA = 0.0036404, compmC = 0.0002317, compmE = 0.0006713), tolerance = 1e-4)
})
# Test for incorrect input types in comp2vech
test_that("comp2vech handles incorrect input types", {
expect_error(comp2vech("some non-matrix input"), "x is neither a list nor a matrix")
})
# Ensure default names are correctly assigned
test_that("default names are assigned correctly", {
result <- identifyComponentModel(matrix(1, 2, 2), matrix(1, 2, 2))
expect_equal(result$nidp, c("Comp1", "Comp2"))
})
# Test for list handling in comp2vech
test_that("comp2vech handles lists correctly", {
list_input <- list(matrix(c(1, 0.5, 0.5, 1), 2, 2), matrix(1, 2, 2))
expect_length(comp2vech(list_input, include.zeros = TRUE), 10) # Adjust based on expected vector length
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.