tests/testthat/test-pval_adj.R

# Testing script the P-Value Adjustment functions
# `calc_pwr_pval_adj()`  - calculates power
# `calc_K_pval_adj()`    - calculates # of clusters per treatment group
# `calc_m_pval_adj()`    - calculates cluster size


# Tests for `calc_pwer_pval_adj()` ---------------------------------------------

# Power based on Chi2 distribution
test_that("P-value final power works with Chi2 distribution", {
  expect_equal(calc_pwr_pval_adj(dist = "Chi2",
                                 K = 15,
                                 m = 300,
                                 alpha = 0.05,
                                 beta1 = 0.1,
                                 beta2 = 0.1,
                                 varY1 = 0.23,
                                 varY2 = 0.25,
                                 rho01 = 0.025,
                                 rho02 = 0.025,
                                 rho2 = 0.05,
                                 r = 1)$`Final Power`,
               c(0.8455, 0.8467, 0.8498))
})

# Power based on F-distribution
test_that("P-value final power works with F distribution", {
  expect_equal(calc_pwr_pval_adj(dist = "F",
                                 K = 15,
                                 m = 300,
                                 alpha = 0.05,
                                 beta1 = 0.1,
                                 beta2 = 0.1,
                                 varY1 = 0.23,
                                 varY2 = 0.25,
                                 rho01 = 0.025,
                                 rho02 = 0.025,
                                 rho2 = 0.05,
                                 r = 1)$`Final Power`,
               c(0.8045, 0.8061, 0.8102))
})

# Throws error when distribution is invalid
test_that("P-value final power throws error correctly when distribution is invalid", {
  expect_error(calc_pwr_pval_adj(dist = 4,
                                 K = 15,
                                 m = 300,
                                 alpha = 0.05,
                                 beta1 = 0.1,
                                 beta2 = 0.1,
                                 varY1 = 0.23,
                                 varY2 = 0.25,
                                 rho01 = 0.025,
                                 rho02 = 0.025,
                                 rho2 = 0.05,
                                 r = 1))
})

# Tests for `calc_K_pval_adj()` ------------------------------------------------

# Final treatment group K for Chi2 distribution
test_that("P-value final treatment group 'K' works for Chi2 distribution", {
  expect_equal(calc_K_pval_adj(dist = "Chi2",
                               power = 0.8,
                               m = 300,
                               alpha = 0.05,
                               beta1 = 0.1,
                               beta2 = 0.1,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1)$`Final Treatment (K)`,
               c(14, 14, 14))
})

# Final control group K for Chi2 distribution
test_that("P-value final control group 'K' works for Chi2 distribution", {
  expect_equal(calc_K_pval_adj(dist = "Chi2",
                               power = 0.8,
                               m = 300,
                               alpha = 0.05,
                               beta1 = 0.1,
                               beta2 = 0.1,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1)$`Final Control (K)`,
               c(14, 14, 14))
})

# Final treatment group K for F distribution
test_that("P-value final treatment group 'K' works for F distribution", {
  expect_equal(calc_K_pval_adj(dist = "F",
                               power = 0.8,
                               m = 300,
                               alpha = 0.05,
                               beta1 = 0.1,
                               beta2 = 0.1,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1)$`Final Treatment (K)`,
               c(15, 15, 15))
})

# Final control group K for F distribution
test_that("P-value final control group 'K' works for F distribution", {
  expect_equal(calc_K_pval_adj(dist = "F",
                               power = 0.8,
                               m = 300,
                               alpha = 0.05,
                               beta1 = 0.1,
                               beta2 = 0.1,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1)$`Final Control (K)`,
               c(15, 15, 15))
})

# Throws error when power can't be reached for F distribution
test_that("P-value final treatment group 'K' throws error when power can't be reached", {
  expect_error(calc_K_pval_adj(dist = "F",
                               power = 0.9,
                               m = 30,
                               alpha = 0.001,
                               beta1 = 0.01,
                               beta2 = 0.01,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1))
})

# Tests for `calc_m_pval_adj()` ------------------------------------------------

# Final m for Chi2 distribution
test_that("P-value final 'm' works", {
  expect_equal(calc_m_pval_adj(dist = "Chi2",
                               power = 0.8,
                               K = 15,
                               alpha = 0.05,
                               beta1 = 0.1,
                               beta2 = 0.1,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1)$`Final m`,
               c(149, 147, 141))
})

# Final m for F distribution
test_that("P-value final 'm' works", {
  expect_equal(calc_m_pval_adj(dist = "F",
                               power = 0.8,
                               K = 15,
                               alpha = 0.05,
                               beta1 = 0.1,
                               beta2 = 0.1,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1)$`Final m`,
               c(275, 267, 248))
})

# Throws an error when 'm' cannot be large enough to attain desired power
test_that("P-value final 'm' throws error when desired power cannot be attained (F dist)", {
  expect_error(calc_m_pval_adj(dist = "F",
                               power = 0.9,
                               K = 4,
                               alpha = 0.05,
                               beta1 = 0.1,
                               beta2 = 0.1,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1))
})

test_that("P-value final 'm' throws error when desired power cannot be attained (Chi2 dist)", {
  expect_error(calc_m_pval_adj(dist = "Chi2",
                               power = 0.9,
                               K = 4,
                               alpha = 0.05,
                               beta1 = 0.1,
                               beta2 = 0.1,
                               varY1 = 0.23,
                               varY2 = 0.25,
                               rho01 = 0.025,
                               rho02 = 0.025,
                               rho2 = 0.05,
                               r = 1))
})

# Testing that all 3 functions align -------------------------------------------

# Power and `m` align for Bonferroni (Chi2 distribution)
test_that("P-value power aligns with m for Bonferroni (Chi2 dist)", {
  result <- calc_m_pval_adj(dist = "Chi2",
                            power = calc_pwr_pval_adj(dist = "Chi2",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[1],
                            K = 15,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final m`[1]
  expect_equal(result, 300, tolerance = 5,
               info = "The result should be 300, but with rounding between 300 and 301")
})

# Power and `m` align for Sidak (Chi2 distribution)
test_that("P-value power aligns with m for Sidak (Chi2 dist)", {
  result <- calc_m_pval_adj(dist = "Chi2",
                            power = calc_pwr_pval_adj(dist = "Chi2",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[2],
                            K = 15,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final m`[2]
  expect_equal(result, 300, tolerance = 5,
              info = "The result should be 300, but with rounding between 300 and 301")
})

# Power and `m` align for D/AP (Chi2 distribution)
test_that("P-value power aligns with m for D/AP (Chi2 dist)", {
  result <- calc_m_pval_adj(dist = "Chi2",
                            power = calc_pwr_pval_adj(dist = "Chi2",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[3],
                            K = 15,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final m`[3]
  expect_equal(result, 300, tolerance = 5,
              info = "The result should be 300, but with rounding between 300 and 301")
})

# Power and `K` align for Bonferroni (Chi2 distribution)
test_that("P-value power aligns with K for Bonferroni (Chi2 Dist)", {
  result <- calc_K_pval_adj(dist = "Chi2",
                            power = calc_pwr_pval_adj(dist = "Chi2",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[1],
                            m = 300,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[1]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# Power and `K` align for Sidak (Chi2 distribution)
test_that("P-value power aligns with K for Sidak (Chi2 dist)", {
  result <- calc_K_pval_adj(dist = "Chi2",
                            power = calc_pwr_pval_adj(dist = "Chi2",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[2],
                            m = 300,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[2]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# Power and `K` align for D/AP (Chi2 distribution)
test_that("P-value power aligns with K for D/AP (Chi2 dist)", {
  result <- calc_K_pval_adj(dist = "Chi2",
                            power = calc_pwr_pval_adj(dist = "Chi2",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[3],
                            m = 300,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[3]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# `m` and `K` align for Bonferroni (Chi2 distribution)
test_that("P-value m aligns with K for Bonferroni (Chi2 dist)", {
  result <- calc_K_pval_adj(dist = "Chi2",
                            power = 0.8,
                            m = calc_m_pval_adj(dist = "Chi2",
                                                K = 15,
                                                power = 0.8,
                                                alpha = 0.05,
                                                beta1 = 0.1,
                                                beta2 = 0.1,
                                                varY1 = 0.23,
                                                varY2 = 0.25,
                                                rho01 = 0.025,
                                                rho02 = 0.025,
                                                rho2 = 0.05,
                                                r = 1)$`Final m`[1],
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[1]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# `m` and `K` align for Sidak (Chi2 distribution)
test_that("P-value m aligns with K for Sidak (Chi2 dist)", {
  result <- calc_K_pval_adj(dist = "Chi2",
                            power = 0.8,
                            m = calc_m_pval_adj(dist = "Chi2",
                                                K = 15,
                                                power = 0.8,
                                                alpha = 0.05,
                                                beta1 = 0.1,
                                                beta2 = 0.1,
                                                varY1 = 0.23,
                                                varY2 = 0.25,
                                                rho01 = 0.025,
                                                rho02 = 0.025,
                                                rho2 = 0.05,
                                                r = 1)$`Final m`[2],
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[2]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# `m` and `K` align for D/AP (Chi2 distribution)
test_that("P-value m aligns with K for D/AP (Chi2 dist)", {
  result <- calc_K_pval_adj(dist = "Chi2",
                            power = 0.8,
                            m = calc_m_pval_adj(dist = "Chi2",
                                                K = 15,
                                                power = 0.8,
                                                alpha = 0.05,
                                                beta1 = 0.1,
                                                beta2 = 0.1,
                                                varY1 = 0.23,
                                                varY2 = 0.25,
                                                rho01 = 0.025,
                                                rho02 = 0.025,
                                                rho2 = 0.05,
                                                r = 1)$`Final m`[3],
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[3]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# Power and `m` align for Bonferroni (F distribution)
test_that("P-value power aligns with m for Bonferroni (F dist)", {
  result <- calc_m_pval_adj(dist = "F",
                            power = calc_pwr_pval_adj(dist = "F",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[1],
                            K = 15,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final m`[1]
  expect_equal(result, 300, tolerance = 5,
              info = "The result should be 300, but with rounding between 300 and 301")
})

# Power and `m` align for Sidak (F distribution)
test_that("P-value power aligns with m for Sidak (F dist)", {
  result <- calc_m_pval_adj(dist = "F",
                            power = calc_pwr_pval_adj(dist = "F",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[2],
                            K = 15,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final m`[2]
  expect_equal(result, 300, tolerance = 5,
              info = "The result should be 300, but with rounding between 300 and 301")
})

# Power and `m` align for D/AP (F distribution)
test_that("P-value power aligns with m for D/AP (F dist)", {
  result <- calc_m_pval_adj(dist = "F",
                            power = calc_pwr_pval_adj(dist = "F",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[3],
                            K = 15,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final m`[3]
  expect_equal(result, 300, tolerance = 5,
              info = "The result should be 300, but with rounding between 300 and 301")
})

# Power and `K` align for Bonferroni (F distribution)
test_that("P-value power aligns with K for Bonferroni (F Dist)", {
  result <- calc_K_pval_adj(dist = "F",
                            power = calc_pwr_pval_adj(dist = "F",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[1],
                            m = 300,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[1]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# Power and `K` align for Sidak (F distribution)
test_that("P-value power aligns with K for Sidak (F dist)", {
  result <- calc_K_pval_adj(dist = "F",
                            power = calc_pwr_pval_adj(dist = "F",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[2],
                            m = 300,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[2]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# Power and `K` align for D/AP (F distribution)
test_that("P-value power aligns with K for D/AP (F dist)", {
  result <- calc_K_pval_adj(dist = "F",
                            power = calc_pwr_pval_adj(dist = "F",
                                                      K = 15,
                                                      m = 300,
                                                      alpha = 0.05,
                                                      beta1 = 0.1,
                                                      beta2 = 0.1,
                                                      varY1 = 0.23,
                                                      varY2 = 0.25,
                                                      rho01 = 0.025,
                                                      rho02 = 0.025,
                                                      rho2 = 0.05,
                                                      r = 1)$`Final Power`[3],
                            m = 300,
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[3]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# `m` and `K` align for Bonferroni (F distribution)
test_that("P-value m aligns with K for Bonferroni (F dist)", {
  result <- calc_K_pval_adj(dist = "F",
                            power = 0.8,
                            m = calc_m_pval_adj(dist = "F",
                                                K = 15,
                                                power = 0.8,
                                                alpha = 0.05,
                                                beta1 = 0.1,
                                                beta2 = 0.1,
                                                varY1 = 0.23,
                                                varY2 = 0.25,
                                                rho01 = 0.025,
                                                rho02 = 0.025,
                                                rho2 = 0.05,
                                                r = 1)$`Final m`[1],
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[1]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# `m` and `K` align for Sidak (F distribution)
test_that("P-value m aligns with K for Sidak (F dist)", {
  result <- calc_K_pval_adj(dist = "F",
                            power = 0.8,
                            m = calc_m_pval_adj(dist = "F",
                                                K = 15,
                                                power = 0.8,
                                                alpha = 0.05,
                                                beta1 = 0.1,
                                                beta2 = 0.1,
                                                varY1 = 0.23,
                                                varY2 = 0.25,
                                                rho01 = 0.025,
                                                rho02 = 0.025,
                                                rho2 = 0.05,
                                                r = 1)$`Final m`[2],
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[2]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

# `m` and `K` align for D/AP (F distribution)
test_that("P-value m aligns with K for D/AP (F dist)", {
  result <- calc_K_pval_adj(dist = "F",
                            power = 0.8,
                            m = calc_m_pval_adj(dist = "F",
                                                K = 15,
                                                power = 0.8,
                                                alpha = 0.05,
                                                beta1 = 0.1,
                                                beta2 = 0.1,
                                                varY1 = 0.23,
                                                varY2 = 0.25,
                                                rho01 = 0.025,
                                                rho02 = 0.025,
                                                rho2 = 0.05,
                                                r = 1)$`Final m`[3],
                            alpha = 0.05,
                            beta1 = 0.1,
                            beta2 = 0.1,
                            varY1 = 0.23,
                            varY2 = 0.25,
                            rho01 = 0.025,
                            rho02 = 0.025,
                            rho2 = 0.05,
                            r = 1)$`Final Treatment (K)`[3]
  expect_equal(result, 15, tolerance = 2,
              info = "The result should be 15, but with rounding between 15 and 16")
})

Try the crt2power package in your browser

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

crt2power documentation built on June 8, 2025, 10:16 a.m.