tests/testthat/test_group_frequency.R

context('check group frequency and helpers functions')

comorbid_column = c('1111', '0010', '0010', '0110')

# disease counts relevant to equal strings
disease_counts = list(c(1), c(1,4), c(1,2,3,4), c(1))

# positions relevant to equal strings at pair level
positions = list(c(1,2,3,4), c(3), c(3), c(2,3))

# unique positions
unique_pos = structure(c(1, 1, 1, 2, 2, 3, 2, 3, 4, 3, 4, 4), .Dim = c(6L,
                                                                       2L))
# outcomes
outcomes = c(1,0,0,1)

test_that('frequency or outcome correctly captured',{
  expect_equal(names(calculate_group_frequency(unique_combinations = unique_pos, all_diseases = disease_counts, outcome_positions = 0, tots = 4))[3:5], c('freq', 'outcome', 'propr_out'))
  expect_equal(calculate_group_frequency(unique_combinations = unique_pos, all_diseases = disease_counts, outcome_positions = 0, tots = 4)[4,1], 2)
  expect_equal(calculate_group_frequency(unique_combinations = unique_pos, all_diseases = disease_counts, outcome_positions = outcomes, tots = 4)[1,'propr_out'], 1.0) # no use_outcome flag; so uses frequency
  expect_equal(calculate_group_frequency(unique_combinations = unique_pos, all_diseases = disease_counts, outcome_positions = outcomes, tots = 4, use_outcome = TRUE)[1,'propr_out'], 0.5) #use_outcome so uses outcome proportion
})

test_that('reduce overlap works', {
  expect_equal(.reduce_set_overlap(list(c(1,2,3), c(2,3,4), c(2,4))), 2)
  expect_equal(.reduce_set_overlap(list(c(1,0), c(2,1))), 1)
})


test_that("unique sets are the correct number",
          {expect_equal(nrow(.get_unique_sets(comorbid_column)), 3)}
          )

test_that("local positions are identified",
          {expect_equal(.get_locales(comorbid_column[1]), c(1,2,3,4))}
          )

test_that("list position function works", {
  expect_equal(.get_list_pos(disease_counts)(3), c(1,2,3,4))
})

# need a group frequency test
AJFOWLER/comorbidgroupr documentation built on May 11, 2021, 6:01 a.m.