tests/testthat/test-lmm-proper.R

context("lmm proper")

beta <- c(10, 15)
sigma <- c(2,2)
fake_data <- fake_data_lmm(beta, sigma[1], sigma[2])
df <- fake_data$df
u <- fake_data$u

fit <- lmm_proper(df,
                  y ~ X1 + X2 - 1 + (1|group),
                  burnin = 1000,
                  iterations = 1000)

beta_guess <- colMeans(fit$beta)
u_guess <- colMeans(fit$u)
sigma_guess <- colMeans(fit$sigma)



test_that("estimates are close to true value", {
  expect_equivalent(beta_guess, beta, tolerance = 0.5)
  expect_equivalent(u_guess, u, tolerance = 0.5)
  expect_equivalent(sigma_guess, sigma, tolerance = 0.5)

})

test_that("output has correct format", {
  expect_named(fit$beta, c("X1", "X2"))
  expect_named(fit$u, paste0("(Intercept)",
                             "[",
                             levels(as.factor(df$group)),
                             "]"))
  expect_named(fit$sigma, c("sigma[e]", "sigma[u]"))

  expect_is(fit, "geblm")
  expect_is(fit$beta, "data.frame")
  expect_is(fit$u, "data.frame")
  expect_is(fit$sigma, "data.frame")

  expect_length(fit$beta$X1, 1000)
  expect_length(fit$u[,1], 1000)
  expect_length(fit$sigma[,1], 1000)
})


test_that("output doesn't have missing values", {
  beta_has_na <- any( apply(fit$beta, 2, is.na) )
  u_has_na <- any( apply(fit$u, 2, is.na) )
  sigma_has_na <- any( apply(fit$sigma, 2, is.na) )
  expect_false(beta_has_na)
  expect_false(u_has_na)
  expect_false(sigma_has_na)
})

test_that("convergence check outputs message on success", {
  expect_output(lmm_proper(df,
                           y ~ X1 + X2 - 1 + (1|group),
                           burnin = 1,
                           iterations = 1),
                "Conditions for geometric convergence are satisfied.")
})
asbates/geblm documentation built on Nov. 12, 2019, 5:23 p.m.