tests/testthat/test-get_residuals.R

skip_if_not_installed("lme4")

data(sleepstudy, package = "lme4")
data(cbpp, package = "lme4")
set.seed(123)
mtcars$w <- abs(rnorm(nrow(mtcars), mean = 1, 0.3))
sleepstudy$w <- abs(rnorm(nrow(sleepstudy), mean = 1, 0.3))
cbpp$w <- abs(rnorm(nrow(cbpp), mean = 1, 0.3))

test_that("get_residuals - lm", {
  m <- lm(am ~ cyl, weights = w, data = mtcars)
  expect_equal(
    as.vector(get_residuals(m, weighted = FALSE)),
    as.vector(residuals(m))
  )
  expect_equal(
    as.vector(get_residuals(m, weighted = FALSE, type = "deviance")),
    as.vector(residuals(m, type = "deviance"))
  )
  expect_equal(
    get_weights(m),
    weights(m)
  )
  expect_equal(
    as.vector(get_residuals(m)),
    as.vector(residuals(m))
  )
  expect_equal(
    as.vector(get_deviance(m)),
    as.vector(deviance(m))
  )
  expect_equal(
    get_residuals(m, weighted = TRUE),
    as.vector(weighted.residuals(m))
  )
})

test_that("get_residuals - glm", {
  m <- suppressWarnings(glm(am ~ cyl, weights = w, data = mtcars, family = binomial))
  expect_equal(
    as.vector(get_residuals(m, weighted = FALSE, type = "response")),
    as.vector(residuals(m, type = "response"))
  )
  expect_equal(
    as.vector(get_residuals(m, weighted = FALSE)),
    as.vector(residuals(m))
  )
  expect_equal(
    get_weights(m),
    weights(m)
  )
  expect_equal(
    as.vector(get_residuals(m)),
    as.vector(residuals(m))
  )
  expect_equal(
    as.vector(get_deviance(m)),
    as.vector(deviance(m))
  )
  expect_equal(
    get_residuals(m, weighted = TRUE),
    as.vector(weighted.residuals(m))
  )
})

test_that("get_residuals - lmer", {
  m <- lme4::lmer(Reaction ~ Days + (Days | Subject), weights = w, data = sleepstudy)
  expect_equal(
    as.vector(get_residuals(m, weighted = FALSE)),
    as.vector(residuals(m))
  )
  expect_equal(
    as.vector(get_residuals(m, weighted = FALSE, type = "deviance")),
    as.vector(residuals(m, type = "deviance"))
  )
  expect_equal(
    get_weights(m),
    weights(m)
  )
  expect_equal(
    as.vector(get_residuals(m)),
    as.vector(residuals(m))
  )
  expect_equal(
    as.vector(get_deviance(m)),
    as.vector(deviance(m, REML = FALSE))
  )
  expect_equal(
    get_residuals(m, weighted = TRUE),
    as.vector(weighted.residuals(m))
  )
})

test_that("get_residuals - glmer", {
  m <- lme4::glmer(
    cbind(incidence, size - incidence) ~ period + (1 | herd),
    weights = w,
    data = cbpp,
    family = binomial,
    nAGQ = 0
  )

  expect_equal(
    as.vector(get_residuals(m, weighted = FALSE, type = "response")),
    as.vector(residuals(m, type = "response"))
  )
  expect_equal(
    as.vector(get_residuals(m, weighted = FALSE)),
    as.vector(residuals(m))
  )
  expect_equal(
    get_weights(m),
    weights(m)
  )
  expect_equal(
    as.vector(get_residuals(m)),
    as.vector(residuals(m))
  )
  expect_equal(
    as.vector(get_deviance(m)),
    177.4023,
    tolerance = 1e-3
  )
  expect_equal(
    get_residuals(m, weighted = TRUE),
    as.vector(weighted.residuals(m))
  )
})


test_that("get_residuals - psych::fa", {
  skip_if_not_installed("psych")
  skip_if_not_installed("parameters")
  data(Thurstone, package = "psych")

  # PCA
  set.seed(123)
  x1 <- psych::principal(Thurstone, 3)
  expect_equal(
    head(get_residuals(x1)),
    c(-0.028657, -0.064068, -0.064693, -0.00835, -0.001788, 0.008548),
    tolerance = 1e-3,
    ignore_attr = TRUE
  )

  # FA
  set.seed(123)
  x2 <- psych::fa(Thurstone, 3)
  expect_equal(
    head(get_residuals(x2)),
    c(0.005337, 0.000473, -0.005609, -0.006647, 0.00088, 0.007646),
    tolerance = 1e-3,
    ignore_attr = TRUE
  )

  set.seed(123)
  x3 <- parameters::factor_analysis(as.data.frame(Thurstone), 3, standardize = FALSE)
  expect_equal(
    head(get_residuals(x3)),
    c(0.005337, 0.000473, -0.005609, -0.006647, 0.00088, 0.007646),
    tolerance = 1e-3,
    ignore_attr = TRUE
  )
})

Try the insight package in your browser

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

insight documentation built on Aug. 19, 2025, 1:12 a.m.