Nothing
library(testthat)
library(mirt)
library(hlt)
## Test that threshpar_grmtree works with valid inputs
test_that("threshpar_grmtree works with valid inputs", {
cat("\n=== Starting threshpar test ===\n")
skip_if_not_installed("mirt")
skip_if_not_installed("hlt")
## ASTI data
data("asti", package = "hlt")
asti$resp <- data.matrix(asti[, 1:4])
## Create the grmtree object
tree <- grmtree(resp ~ gender + group, data = asti)
# Default usage
expect_silent(thresh <- threshpar_grmtree(tree))
expect_s3_class(thresh, "data.frame")
expect_true(nrow(thresh) > 0)
expect_true(all(c("Node", "Item") %in% names(thresh)))
# Specific nodes
nodes <- partykit::nodeids(tree, terminal = TRUE)
if (length(nodes) > 1) {
expect_silent(thresh_sub <- threshpar_grmtree(tree, node = nodes[1:2]))
expect_equal(unique(thresh_sub$Node), nodes[1:2])
}
cat("Current objects:", ls(), "\n")
})
## Test that threshpar_grmtree handles errors appropriately
test_that("threshpar_grmtree handles errors appropriately", {
skip_if_not_installed("mirt")
skip_if_not_installed("hlt")
data("asti", package = "hlt")
asti$resp <- data.matrix(asti[, 1:4])
tree <- grmtree(resp ~ gender + group, data = asti[1:1000,])
# Invalid object
expect_error(threshpar_grmtree(list()), "must be a grmtree object")
# Invalid nodes
nodes <- partykit::nodeids(tree, terminal = TRUE)
expect_error(threshpar_grmtree(tree, node = 999), "Invalid node IDs")
})
## Test that apply_to_models helper works correctly
test_that("apply_to_models helper works correctly", {
skip_if_not_installed("mirt")
skip_if_not_installed("hlt")
data(asti, package = "hlt")
asti$resp <- data.matrix(asti[, 1:4])
tree <- grmtree(resp ~ gender + group, data = asti)
# Default usage
expect_silent(models <- apply_to_models(tree))
expect_type(models, "list")
expect_true(length(models) > 0)
# With custom function
expect_silent(coefs <- apply_to_models(tree, FUN = function(x) mirt::coef(x, simplify = TRUE)))
expect_true(all(sapply(coefs, is.list)))
# With specific nodes
nodes <- partykit::nodeids(tree, terminal = TRUE)[1:2]
expect_silent(sub_models <- apply_to_models(tree, node = nodes))
expect_equal(length(sub_models), length(nodes))
# Error cases
expect_error(apply_to_models(list()), "must be a grmtree object")
expect_error(apply_to_models(tree, FUN = "not_a_function"), "must be a function")
})
## Test that the internal grm_threshpar works
test_that("internal grm_threshpar works", {
skip_if_not_installed("mirt")
skip_if_not_installed("hlt")
data(asti, package = "hlt")
asti$resp <- data.matrix(asti[, 1:4])
tree <- grmtree(resp ~ gender + group, data = asti)
expect_silent(thresh <- grm_threshpar(tree))
expect_true(is.matrix(thresh))
expect_true(nrow(thresh) > 0)
nodes <- partykit::nodeids(tree, terminal = TRUE)
if (length(nodes) > 1) {
expect_silent(thresh_sub <- grm_threshpar(tree, node = nodes[1:2]))
expect_equal(nrow(thresh_sub), length(nodes[1:2]) * ncol(asti[, 1:4]))
}
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.