# DFBA beta contrast tests
## Test data
n1_vec<-c(22, 15, 13, 21)
n2_vec<-c(18, 25, 27, 19)
ABcontrast<-c(.5, -.5, -.5, .5)
# Error tests
test_that("Not enough samples",{
expect_error(dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = n2_vec,
contrast_vec = ABcontrast,
samples = 8),
"For reliable results please use at least 10000 Monte Carlo samples")
})
test_that("Stop if vector lengths are mismatched",{
expect_error(dfba_beta_contrast(n1_vec = n1_vec[-1],
n2_vec = n2_vec,
contrast_vec = ABcontrast),
"The vectors n1_vec, n2_vec, and contrast_vec must have the same length.")
})
test_that("Stop if any of n1 is negative",{
expect_error(dfba_beta_contrast(n1_vec = c(n1_vec[-1], -1),
n2_vec = n2_vec,
contrast_vec = ABcontrast),
"n1_vec values must be non-negative integers")
})
test_that("Stop if any of n2 is negative",{
expect_error(dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = c(n2_vec[-1], -1),
contrast_vec = ABcontrast),
"n2_vec values must be non-negative integers")
})
test_that("Stop if any of a0 is negative",{
expect_error(dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = n2_vec,
contrast_vec = ABcontrast,
a0_vec = c(-1, rep(1, length(n1_vec)-1))),
"All values in both the a0_vec and b0_vec shape parameter vectors for the prior beta must be positive and finite.")
})
test_that("Stop if any of b0 is negative",{
expect_error(dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = n2_vec,
contrast_vec = ABcontrast,
b0_vec = c(-1, rep(1, length(n1_vec)-1))),
"All values in both the a0_vec and b0_vec shape parameter vectors for the prior beta must be positive and finite.")
})
test_that("Stop if positive contrast coefficient sum != 1",{
expect_error(dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = n2_vec,
contrast_vec = c(.5, -.5, -.5, 500)),
"The sum of the positive contrast coefficients must be 1")
})
test_that("Stop if negative contrast coefficient sum != -1",{
expect_error(dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = n2_vec,
contrast_vec = c(.5, -500, -.5, .5)),
"The sum of the negative contrast coefficients must be -1")
})
test_that("Unreasonable probability intervals must be stopped",{
expect_error(dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = n2_vec,
contrast_vec = ABcontrast,
prob_interval = 7),
"The probability for the interval estimate must be between 0 and 1.")
})
# Function tests
Acon<-dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = n2_vec,
contrast_vec = ABcontrast)
test_that("Posterior contrast mean is correct",{
expect_lte(abs(Acon$mean-.1785714), 3e-05)
})
test_that("Posterior contrast median is correct",{
expect_lte(abs(Acon$delta_quantiles[51]-.17924), 0.00904)
})
test_that("Equal-tail lower limit is correct",{
expect_lte(abs(Acon$eti_lower-.030875), 0.0176)
})
test_that("Equal-tail upper limit is correct",{
expect_lte(abs(Acon$eti_upper-.32255), 0.0114)
})
test_that("Prior probability of positive contrast is correct",{
expect_lte(abs(Acon$prior_positive_delta-.50013), 0.0343)
})
test_that("Posterior probability of positive contrast is correct",{
expect_lte(abs(Acon$prob_positive_delta-.991), 0.0063)
})
test_that("Bayes Factor is correct",{
expect_lte(abs(Acon$bayes_factor-111.034), 250)
})
test_that("Giant BF values = samples",{
n1_vec<-c(22, 0, 0, 21)
n2_vec<-c(18, 25, 27, 19)
Bcon<-dfba_beta_contrast(n1_vec = n1_vec,
n2_vec = n2_vec,
contrast_vec = ABcontrast)
expect_equal(Bcon$bayes_factor,
Bcon$samples)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.