tests/testthat/test-npn.R

test_that("huge.npn shrinkage transformation works", {
  set.seed(60)
  L <- huge.generator(n = 80, d = 20, graph = "hub", verbose = FALSE)
  Q <- huge.npn(L$data, npn.func = "shrinkage", verbose = FALSE)

  expect_equal(dim(Q), dim(L$data))
  expect_true(all(is.finite(Q)))
  # columns should have unit variance (approximately)
  sds <- apply(Q, 2, sd)
  expect_true(all(abs(sds - 1) < 0.1))
})

test_that("huge.npn truncation transformation works", {
  set.seed(61)
  L <- huge.generator(n = 80, d = 20, graph = "hub", verbose = FALSE)
  Q <- huge.npn(L$data, npn.func = "truncation", verbose = FALSE)

  expect_equal(dim(Q), dim(L$data))
  expect_true(all(is.finite(Q)))
})

test_that("huge.npn skeptic returns a correlation matrix", {
  set.seed(62)
  L <- huge.generator(n = 80, d = 20, graph = "hub", verbose = FALSE)
  Q <- huge.npn(L$data, npn.func = "skeptic", verbose = FALSE)

  expect_equal(dim(Q), c(20, 20))
  expect_equal(Q, t(Q), tolerance = 1e-10)
  expect_true(all(abs(diag(Q) - 1) < 1e-10))
})

test_that("npn-transformed data works with estimation methods", {
  set.seed(63)
  L <- huge.generator(n = 80, d = 20, graph = "hub", verbose = FALSE)
  Q <- huge.npn(L$data^3, verbose = FALSE)  # nonlinear distortion
  fit <- huge(Q, method = "mb", verbose = FALSE)

  expect_s3_class(fit, "huge")
  expect_true(all(diff(fit$sparsity) >= -1e-10))
})

Try the huge package in your browser

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

huge documentation built on March 11, 2026, 5:07 p.m.