tests/testthat/test-mvn.R

library(MGMM)

test_that("MVN Complete Data.", {
  withr::local_seed(101)
  data <- rGMM(n = 1e3, d = 2, k = 1, miss = 0)
  fit <- FitGMM(data, k = 1)
  expect_equal(mean(fit), c(0, 0), tolerance = 0.1, ignore_attr = TRUE)
  expect_equal(vcov(fit), diag(2), tolerance = 0.1, ignore_attr = TRUE)
})


# -----------------------------------------------------------------------------

test_that("MVN Incomplete Data.", {
  withr::local_seed(101)
  data <- rGMM(n = 1e3, d = 2, k = 1, miss = 0.2)
  fit <- FitGMM(data, k = 1, report = FALSE)
  expect_equal(mean(fit), c(0, 0), tolerance = 0.1, ignore_attr = TRUE)
  expect_equal(vcov(fit), diag(2), tolerance = 0.15, ignore_attr = TRUE)
})


# -----------------------------------------------------------------------------

test_that("Rank deficient covariance matrix.", {
  skip_on_cran()
  withr::local_seed(101)
  
  d <- 10
  n <- 9
  data <- rGMM(
    n = n, 
    d = d, 
    k = 1, 
    means = rep(2, d),
    miss = 0.1
  )
  fit <- expect_error(FitGMM(data, k = 1, lambda = 1e-1, report = FALSE), NA)
  
})

# -----------------------------------------------------------------------------

test_that("S3 methods work on mvn fit.", {
  withr::local_seed(109)
  data <- rGMM(n = 50, d = 2, k = 1, miss = 0)
  fit <- FitGMM(data, k = 1, report = FALSE)
  expect_s4_class(fit, "mvn")
  expect_equal(length(mean(fit)), 2)
  expect_equal(dim(vcov(fit)), c(2, 2))
  ll <- suppressWarnings(logLik(fit))
  expect_true(is.numeric(ll) && length(ll) == 1)
  expect_error(capture.output(print(fit)), NA)
})

Try the MGMM package in your browser

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

MGMM documentation built on Feb. 27, 2026, 1:07 a.m.