Nothing
# 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")
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.