rows <- 800 disc_vars <- sample(seq(2, 3), 1) cont_vars <- sample(seq(3, 5), 1) dt <- gen_marg_joint_data(n_obs = rows, n_disc = disc_vars, n_cont = cont_vars, n_lvls = 3, p_outs = 0.20, jp_outs = 0.80, assoc_target = 1, assoc_vars = c(1,2), assoc_type="quotient", seed_num = 1) discrete_scores <- disc_scores(data = dt, disc_cols = c(1:disc_vars)) continuous_scores <- cont_scores(data = dt, cont_cols = c((disc_vars+1):(disc_vars+cont_vars))) marginal_outliers <- marg_outs_scores(data = dt, disc_cols = c(1:disc_vars), outscorediscdf = discrete_scores[[2]], outscorecontdf = continuous_scores, outscorediscdfcells = discrete_scores[[3]]) marginal_outliers <- unique(unlist(marginal_outliers)) testthat::test_that("Incorrect input argument values.", { testthat::expect_error(assoc_detect(data = as.matrix(dt, nrow=rows), marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "Data set should be of class 'data.frame'.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = c(1,2), pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "Only one target (discrete) variable is allowed.", fixed = TRUE) testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = c(disc_vars+1), pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "Target (discrete) variable should be of class 'factor'.", fixed = TRUE) testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "Predictor variables should be of class 'numeric'.") testthat::expect_error(assoc_detect(data = dt, marginals = c(marginal_outliers, marginal_outliers[1]), target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "Indices of marginal outliers should be unique.") testthat::expect_error(assoc_detect(data = dt, marginals = c(marginal_outliers, rows+1), target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "Indices of marginal outliers should be unique integer values from 1 up to the number of observations in the data.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = '1e-3', alpha2 = 1e-1), "alpha1 should be of class 'numeric'.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = '1e-1'), "alpha2 should be of class 'numeric'.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = '0.10', mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "delta should be of class 'numeric'.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = '1', alpha1 = 1e-3, alpha2 = 1e-1), "Minkowski order should be of class 'numeric'.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = c(1e-3, 1e-2), alpha2 = 1e-1), "alpha1 should be of unit length.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = c(1e-1, 1e-2)), "alpha2 should be of unit length.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = c(0.10, 0.20), mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "delta should be of unit length.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = c(1, 1/2), alpha1 = 1e-3, alpha2 = 1e-1), "Minkowski order should be of unit length.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = -1e-3, alpha2 = 1e-1), "alpha1 should be positive.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 0, alpha2 = 1e-1), "alpha1 should be positive.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1.1, alpha2 = 1e-1), "alpha1 should be positive.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = -1e-1), "alpha2 should be positive.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = 0), "alpha2 should be positive.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.10, mink_order = 1, alpha1 = 1e-3, alpha2 = 1.1), "alpha2 should be positive.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "delta should be positive and at most equal to 0.5.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = -0.1, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "delta should be positive and at most equal to 0.5.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.51, mink_order = 1, alpha1 = 1e-3, alpha2 = 1e-1), "delta should be positive and at most equal to 0.5.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.1, mink_order = 0, alpha1 = 1e-3, alpha2 = 1e-1), "Minkowski order should be positive.") testthat::expect_error(assoc_detect(data = dt, marginals = marginal_outliers, target_inx = 1, pred_inx = c(disc_vars+1, disc_vars+2), delta = 0.1, mink_order = -0.1, alpha1 = 1e-3, alpha2 = 1e-1), "Minkowski order should be positive.") })