tests/testthat/test_convergence_check.R

context("Test check for convergence using ELBO or not")

test_that("mvsusieR gets same result checking ELBO or not", with(simulate_univariate(), {
    # Do not estimate prior variance
    SER = SingleEffectModel(BayesianSimpleRegression)$new(d$n_effect, V)
    A = SuSiE$new(SER, L, estimate_residual_variance = FALSE, compute_objective = TRUE, tol = 1E-6)
    d.copy = d$clone(T)
    A$fit(d.copy)
    A = report_susie_model(d.copy, A)
    B = SuSiE$new(SER, L, estimate_residual_variance = FALSE, compute_objective = FALSE, tol = 1E-6)
    d.copy = d$clone(T)
    B$fit(d.copy)
    B = report_susie_model(d.copy, B) 
    expect_susie_equal(A,B,FALSE,FALSE,tol = 1e-3)
    # Estimate prior variance
    SER = SingleEffectModel(BayesianSimpleRegression)$new(d$n_effect, V)
    A = SuSiE$new(SER, L, estimate_residual_variance = FALSE, compute_objective = TRUE, tol = 1E-6)
    d.copy = d$clone(T)
    A$fit(d.copy, estimate_prior_variance_method='optim')
    A = report_susie_model(d.copy, A) 
    B = SuSiE$new(SER, L, estimate_residual_variance = FALSE, compute_objective = FALSE, tol = 1E-6)
    d.copy = d$clone(T)
    B$fit(d.copy, estimate_prior_variance_method='optim')
    B = report_susie_model(d.copy, B) 
    expect_susie_equal(A,B,T,F,tol=5E-4)
}))

test_that("mvsusieR gets same result checking ELBO or not RSS", with(simulate_univariate(summary = T), {
  # Do not estimate prior variance
  SER = SingleEffectModel(BayesianSimpleRegression)$new(d$n_effect, V)
  A = SuSiE$new(SER, L, estimate_residual_variance = FALSE, compute_objective = TRUE, tol = 1E-6)
  d.copy = d$clone(T)
  A$fit(d.copy)
  A = report_susie_model(d.copy, A)
  B = SuSiE$new(SER, L, estimate_residual_variance = FALSE, compute_objective = FALSE, tol = 1E-6)
  d.copy = d$clone(T)
  B$fit(d.copy)
  B = report_susie_model(d.copy, B) 
  expect_susie_equal(A,B,F,F,tol=1E-3)
  # Estimate prior variance
  SER = SingleEffectModel(BayesianSimpleRegression)$new(d$n_effect, V)
  A = SuSiE$new(SER, L, estimate_residual_variance = FALSE, compute_objective = TRUE, tol = 1E-6)
  d.copy = d$clone(T)
  A$fit(d.copy, estimate_prior_variance_method='optim')
  A = report_susie_model(d.copy, A) 
  B = SuSiE$new(SER, L, estimate_residual_variance = FALSE, compute_objective = FALSE, tol = 1E-6)
  d.copy = d$clone(T)
  B$fit(d.copy, estimate_prior_variance_method='optim')
  B = report_susie_model(d.copy, B) 
  expect_susie_equal(A,B,T,F,tol=5E-4)
}))
gaow/mmbr documentation built on April 24, 2024, 7:12 p.m.