tests/testthat/test-agg_methods.R

library(pointblank)


method_schema_default <- function(method_to_test, type){

  tbl <- data_ratings %>%
    method_to_test(type = {{type}}, percent_toggle = TRUE)

  test_that("column `method` exists", {

    expect_col_exists(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })


  test_that("column `paper_id` exists", {

    expect_col_exists(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("column `cs` exists", {

    expect_col_exists(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("column `n_experts` exists", {

    expect_col_exists(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })


  test_that("values in `n_experts` should be between `0` and `25`", {

    expect_col_vals_between(
      tbl,
      columns = vars(n_experts),
      left = 0,
      right = 25,
      threshold = 1
    )
  })


  test_that("values in `cs` should be between `0` and `1`", {

    expect_col_vals_between(
      tbl,
      columns = vars(cs),
      left = 0,
      right = 1,
      threshold = 1
    )
  })


  test_that("column `method` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("column `paper_id` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })


  test_that("column `n_experts` is of type: integer", {

    expect_col_is_integer(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

  test_that("all values in `method` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("all values in `paper_id` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("all values in `cs` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("all values in `n_experts` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

}

# Measures of unweighted aggregation
method_schema_default(AverageWAgg, type = "ArMean")
method_schema_default(AverageWAgg, type = "Median")
method_schema_default(AverageWAgg, type = "GeoMean")
method_schema_default(AverageWAgg, type = "LOArMean")
method_schema_default(AverageWAgg, type = "ProbitArMean")

method_schema_default(LinearWAgg, type = "DistLimitWAgg")
method_schema_default(LinearWAgg, type = "GranWAgg")
method_schema_default(LinearWAgg, type = "OutWAgg")

method_schema_default(IntervalWAgg, type = "IntWAgg")
method_schema_default(IntervalWAgg, type = "IndIntWAgg")
method_schema_default(IntervalWAgg, type = "AsymWAgg")
method_schema_default(IntervalWAgg, type = "IndIntAsymWAgg")
method_schema_default(IntervalWAgg, type = "VarIndIntWAgg")
method_schema_default(IntervalWAgg, type = "KitchSinkWAgg")

method_schema_default(DistributionWAgg, type = "DistribArMean")
method_schema_default(DistributionWAgg, type = "TriDistribArMean")

method_schema_default(ShiftingWAgg, type = "ShiftWAgg")
method_schema_default(ShiftingWAgg, type = "BestShiftWAgg")
method_schema_default(ShiftingWAgg, type = "IntShiftWAgg")
method_schema_default(ShiftingWAgg, type = "DistShiftWAgg")
method_schema_default(ShiftingWAgg, type = "DistIntShiftWAgg")



# Method Test Needing Additional Arguments --------------------------------


method_schema_linear_weights <- function(method_to_test, weights, type, name){

  tbl <- data_ratings %>%
    method_to_test(weights, type = {{type}} , name = {{name}}, percent_toggle = TRUE)

  test_that("column `method` exists", {

    expect_col_exists(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })


  test_that("column `paper_id` exists", {

    expect_col_exists(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("column `cs` exists", {

    expect_col_exists(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("column `n_experts` exists", {

    expect_col_exists(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })


  test_that("values in `n_experts` should be between `0` and `25`", {

    expect_col_vals_between(
      tbl,
      columns = vars(n_experts),
      left = 0,
      right = 25,
      threshold = 1
    )
  })


  test_that("values in `cs` should be between `0` and `1`", {

    expect_col_vals_between(
      tbl,
      columns = vars(cs),
      left = 0,
      right = 1,
      threshold = 1
    )
  })


  test_that("column `method` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("column `paper_id` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })


  test_that("column `n_experts` is of type: integer", {

    expect_col_is_integer(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

  test_that("all values in `method` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("all values in `paper_id` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("all values in `cs` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("all values in `n_experts` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

}



# LinearWAgg Additional Arguments -----------------------------------------

method_schema_linear_weights(LinearWAgg,
                             weights = data_supp_quiz %>%
                               dplyr::rename(weight = quiz_score),
                             type = "Participant_LO",
                             name = "QuizWAgg")
#
#
# method_schema_linear_weights(LinearWAgg,
#                              weights = data_ratings %>%
#                                dplyr::filter(element == "three_point_best",
#                                              round == "round_2") %>%
#                                dplyr::select(paper_id,
#                                              user_name,
#                                              timestamp) %>%
#                                dplyr::group_by(user_name) %>%
#                                dplyr::arrange(timestamp) %>%
#                                dplyr::mutate(claim_count = dplyr::row_number()) %>%
#                                dplyr::ungroup() %>%
#                                dplyr::mutate(weight = log(claim_count) + 1) %>%
#                                dplyr::select(paper_id,
#                                              user_name,
#                                              weight),
#                              type = "Judgement",
#                              name = "ExperienceWAgg")

method_schema_linear_weights(LinearWAgg,
                             weights = data_ratings %>%
                               dplyr::filter(question == "comprehension",
                                             round == "round_2") %>%
                               dplyr::select(paper_id,
                                             user_name,
                                             value) %>%
                               dplyr::rename(weight = value),
                             type = "Judgement",
                             name = "CompWAgg")

method_schema_linear_weights(LinearWAgg,
                             weights = data_justifications %>%
                               dplyr::mutate(n_words = stringr::str_count(justification, pattern = " ") + 1) %>%
                               dplyr::group_by(user_name,
                                               paper_id) %>%
                               dplyr::summarise(word_count = sum(n_words,
                                                                 na.rm = TRUE)) %>%
                               dplyr::select(paper_id,
                                             user_name,
                                             word_count) %>%
                               dplyr::rename(weight = word_count),
                             type = "Judgement",
                             name = "EngWAgg")


# Reasoning ---------------------------------------------------------------


method_schema_reasoning <- function(method_to_test, reasons, type, name, beta_transform){

  tbl <- data_ratings %>%
    method_to_test(reasons, type = {{type}} , name = {{name}}, beta_transform = {{beta_transform}}, percent_toggle = TRUE)

  test_that("column `method` exists", {

    expect_col_exists(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })


  test_that("column `paper_id` exists", {

    expect_col_exists(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("column `cs` exists", {

    expect_col_exists(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("column `n_experts` exists", {

    expect_col_exists(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })


  test_that("values in `n_experts` should be between `0` and `25`", {

    expect_col_vals_between(
      tbl,
      columns = vars(n_experts),
      left = 0,
      right = 25,
      threshold = 1
    )
  })


  test_that("values in `cs` should be between `0` and `1`", {

    expect_col_vals_between(
      tbl,
      columns = vars(cs),
      left = 0,
      right = 1,
      threshold = 1
    )
  })


  test_that("column `method` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("column `paper_id` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })


  test_that("column `n_experts` is of type: integer", {

    expect_col_is_integer(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

  test_that("all values in `method` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("all values in `paper_id` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("all values in `cs` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("all values in `n_experts` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

}



method_schema_reasoning(ReasoningWAgg,
                        reasons = data_supp_reasons,
                        type = "ReasonWAgg",
                        name = "ReasonWAgg",
                        beta_transform = FALSE)

method_schema_reasoning(ReasoningWAgg,
                        reasons = data_supp_reasons,
                        type = "ReasonWAgg2",
                        name = "ReasonWAgg2",
                        beta_transform = FALSE)

method_schema_reasoning(ReasoningWAgg,
                        reasons = data_supp_reasons,
                        type = "ReasonWAgg",
                        name = "BetaReasonWAgg",
                        beta_transform = TRUE)

method_schema_reasoning(ReasoningWAgg,
                        reasons = data_supp_reasons,
                        type = "ReasonWAgg2",
                        name = "BetaReasonWAgg2",
                        beta_transform = TRUE)


# Bayes --------------------------------------------------------------------



method_schema_bays <- function(method_to_test, priors, type, name){

  tbl <- data_ratings %>%
    method_to_test(priors, type = {{type}} , name = {{name}}, percent_toggle = TRUE)

  test_that("column `method` exists", {

    expect_col_exists(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })


  test_that("column `paper_id` exists", {

    expect_col_exists(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("column `cs` exists", {

    expect_col_exists(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("column `n_experts` exists", {

    expect_col_exists(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })


  test_that("values in `n_experts` should be between `0` and `25`", {

    expect_col_vals_between(
      tbl,
      columns = vars(n_experts),
      left = 0,
      right = 25,
      threshold = 1
    )
  })


  test_that("values in `cs` should be between `0` and `1`", {

    expect_col_vals_between(
      tbl,
      columns = vars(cs),
      left = 0,
      right = 1,
      threshold = 1
    )
  })


  test_that("column `method` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("column `paper_id` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })


  test_that("column `n_experts` is of type: integer", {

    expect_col_is_integer(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

  test_that("all values in `method` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("all values in `paper_id` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("all values in `cs` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("all values in `n_experts` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

}

# method_schema_bays(BayesianWAgg, priors = NULL, type = "BayTriVar", name = "BayTriVar")

# method_schema_bays(BayesianWAgg, priors = data_supp_priors, type = "BayPRIORsAgg", name = "BayTriVar")


# Extreme Wag -------------------------------------------------------------

method_schema_extreme <- function(method_to_test, type, name, cutoff_lower, cutoff_upper){


  tbl <- data_ratings %>%
    method_to_test(type = {{type}} , name = {{name}}, cutoff_lower = {{cutoff_lower}}, cutoff_upper = {{cutoff_upper}}, percent_toggle = TRUE)

  test_that("column `method` exists", {

    expect_col_exists(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })


  test_that("column `paper_id` exists", {

    expect_col_exists(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("column `cs` exists", {

    expect_col_exists(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("column `n_experts` exists", {

    expect_col_exists(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })


  test_that("values in `n_experts` should be between `0` and `25`", {

    expect_col_vals_between(
      tbl,
      columns = vars(n_experts),
      left = 0,
      right = 25,
      threshold = 1
    )
  })


  test_that("values in `cs` should be between `0` and `1`", {

    expect_col_vals_between(
      tbl,
      columns = vars(cs),
      left = 0,
      right = 1,
      threshold = 1
    )
  })


  test_that("column `method` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("column `paper_id` is of type: character", {

    expect_col_is_character(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })


  test_that("column `n_experts` is of type: integer", {

    expect_col_is_integer(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })

  test_that("all values in `method` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(method),
      threshold = 1
    )
  })

  test_that("all values in `paper_id` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(paper_id),
      threshold = 1
    )
  })

  test_that("all values in `cs` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(cs),
      threshold = 1
    )
  })

  test_that("all values in `n_experts` should not be NULL", {

    expect_col_vals_not_null(
      tbl,
      columns = vars(n_experts),
      threshold = 1
    )
  })


}

method_schema_extreme(ExtremisationWAgg,
                      type = "BetaArMean",
                      name = "BetaArMean",
                      cutoff_lower = NULL,
                      cutoff_upper = NULL)

method_schema_extreme(ExtremisationWAgg,
                      type = "BetaArMean2",
                      name = "BetaArMean2",
                      cutoff_lower = 0.4,
                      cutoff_upper = 0.6)

Try the aggreCAT package in your browser

Any scripts or data that you put into this service are public.

aggreCAT documentation built on June 8, 2025, 11:06 a.m.