# Wilcoxon tests
## Test Data
### data for small method tests
Y1<-c(2.286,0.621,0.967,3.782,18.960,5.473,4.274,0.605)
Y2<-c(1.114,0.002,0.382,1.251,0.003,8.413,7.947,0.050)
### data for large method tests
Y1L<-rep(Y1, 4)
Y2L<-rep(Y2, 4)
# Error tests
test_that("Vector lengths must match",{
expect_error(dfba_wilcoxon(Y1[-1],
Y2,
samples=10000),
"Y1 and Y2 must have the same length. This function is for paired within-block data.")
})
test_that("Missing a0 parameter produces stop error",{
expect_error(dfba_wilcoxon(a0 = NA,
Y1,
Y2,
samples=10000),
"Both a0 and b0 must be positive and finite")
})
test_that("Missing b0 parameter produces stop error",{
expect_error(dfba_wilcoxon(b0 = NA,
Y1,
Y2,
samples=10000),
"Both a0 and b0 must be positive and finite")
})
test_that("Unreasonable probability intervals must be stopped",{
expect_error(dfba_wilcoxon(Y1,
Y2,
samples=10000,
prob_interval = 1000000),
"The probability for the interval estimate of phi_w must be a proper proportion.")
})
test_that("Too few samples throws message",{
expect_message(dfba_wilcoxon(Y1,
Y2,
samples=1),
"For reliable results, the recommended minimum number of Monte Carlo samples is 10000")
})
test_that("Too small vectors throws error",{
expect_error(dfba_wilcoxon(Y1[1:2],
Y2[1:2],
samples=10000),
"There are not enough values in the Y1 and Y2 vectors for meaningful results.")
})
test_that("Stop if differences are trivial",{
expect_error(dfba_wilcoxon(Y1,
Y1,
samples=10000),
"Y1 and Y2 differences are all trivial")
})
test_that("Method must be large or small",{
expect_error(dfba_wilcoxon(Y1,
Y2,
samples=10000,
method = "medium"),
"An explicit method stipulation must be either the word large or the word small.")
})
# Small method tests
set.seed(77)
Awil<-dfba_wilcoxon(Y1,
Y2,
samples=500)
test_that("T_positive for small method is correct",{
expect_equal(floor(Awil$T_pos + 0.1), 23)
})
test_that("T_negative for small method is correct",{
expect_equal(floor(Awil$T_neg + 0.1), 13)
})
test_that("Phibar for small method is correct",{
expect_lte(abs(Awil$phibar - 0.612888), 0.00568)
})
test_that("Prior H1 for small method is correct",{
expect_lte(abs(Awil$prH1 - 0.75174), 0.020536)
})
test_that("HDI lower limit for small method is correct",{
expect_lte(abs(Awil$hdi_lower - 0.282248), 0.01515)
})
test_that("HDI upper limit for small method is correct",{
expect_lte(abs(Awil$hdi_upper - 0.893838), 0.00708)
})
test_that("Bayes Factor 10 for small method is correct",{
expect_lte(abs(Awil$BF10 - 3.028392), 0.5)
})
test_that("Posterior distribution for Phi for small method is correct",{
expect_equal(floor(sum(Awil$phipost)+.0001), 1)
})
test_that("Total cumulative probability for Phi for small method is correct",{
expect_equal(floor(Awil$cumulative_phi[200]+.0001), 1)
})
test_that("Function works with a tie",{
expect_lte(abs(dfba_wilcoxon(Y1,
c(Y1[1], Y2[-1]),
samples=500)$phibar-0.613),
0.05)
})
test_that("Equal-tail interval works for tiny LL",{
expect_lte(dfba_wilcoxon(Y1,
Y1+3,
samples=500)$hdi_lower,
0.05)
})
test_that("Giant BF = Samples",{
expect_equal(dfba_wilcoxon(Y1L,
Y1L-30,
method = "small",
samples=500)$BF10,
500)
})
set.seed(NULL)
# Large method tests
Bwil<-dfba_wilcoxon(Y1L,Y2L)
test_that("T_positive for large method is correct",{
expect_equal(floor(Bwil$T_pos + 0.1), 332)
})
test_that("T_negative for large method is correct",{
expect_equal(floor(Bwil$T_neg + 0.1), 196)
})
test_that("n value for large method is correct",{
expect_equal(floor(Bwil$n + 0.1), 32)
})
test_that("posterior a parameter for large method is correct",{
expect_lte(abs(Bwil$a_post - 15.84091), 0.0001)
})
test_that("posterior b parameter for large method is correct",{
expect_lte(abs(Bwil$b_post - 9.659091), 0.0001)
})
test_that("posterior mean for large method is correct",{
expect_lte(abs(Bwil$post_mean - 0.6212121), 0.0001)
})
test_that("posterior median for large method is correct",{
expect_lte(abs(Bwil$post_median - 0.6244281), 0.0001)
})
test_that("Posterior probability of H1 for large method is correct",{
expect_lte(abs(Bwil$prH1 - 0.8945555), 0.0001)
})
test_that("Bayes Factor 1/0 for large method is correct",{
expect_lte(abs(Bwil$BF10 - 8.483664), 0.02)
})
test_that("Lower Limit for Equal-Tail Interval for large method is correct",{
expect_lte(abs(Bwil$eti_lower - 0.4293161), 0.0001)
})
test_that("Upper Limit for Equal-Tail Interval for large method is correct",{
expect_lte(abs(Bwil$eti_upper - 0.7950966), 0.0001)
})
test_that("Lower Limit for Highest-Density Interval for large method is correct",{
expect_lte(abs(Bwil$hdi_lower - 0.4361713), 0.0001)
})
test_that("Upper Limit for Highest-Density Interval for large method is correct",{
expect_lte(abs(Bwil$hdi_upper - 0.8010602), 0.0001)
})
test_that("Giant BF = Inf",{
expect_equal(dfba_wilcoxon(rep(Y1L, 10),
rep(Y1L-20, 10))$BF10,
Inf)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.