context("Testing test_cop.R")
# Error Case 1: Standard error is zero or negative
test_that("Standard error check", {
expect_error(test_cop(est_eff = 0.4, std_err = 0, n_obs = 300, n_covariates = 5,
sdx = 1, sdy = 1, R2 = 0.5, eff_thr = 0, FR2max = 0.6, alpha = 0.05, tails = 2),
"Did not run! Standard error needs to be \n greater than zero.")
})
# Error Case 2: Standard deviation of x is zero or negative
test_that("Standard deviation of x check", {
expect_error(test_cop(est_eff = 0.4, std_err = 0.1, n_obs = 300, n_covariates = 5,
sdx = 0, sdy = 1, R2 = 0.5, eff_thr = 0, FR2max = 0.6, alpha = 0.05, tails = 2),
"Did not run! Standard deviation of x needs to be \n greater than zero.")
})
# Error Case 3: Standard deviation of y is zero or negative
test_that("Standard deviation of y check", {
expect_error(test_cop(est_eff = 0.4, std_err = 0.1, n_obs = 300, n_covariates = 5,
sdx = 1, sdy = 0, R2 = 0.5, eff_thr = 0, FR2max = 0.6, alpha = 0.05, tails = 2),
"Did not run! Standard deviation of y needs to be \n greater than zero.")
})
# Error Case 4: Insufficient observations relative to number of covariates
test_that("Observations relative to covariates check", {
expect_error(test_cop(est_eff = 0.4, std_err = 0.1, n_obs = 8, n_covariates = 5,
sdx = 1, sdy = 1, R2 = 0.5, eff_thr = 0, FR2max = 0.6, alpha = 0.05, tails = 2),
"Did not run! There are too few observations relative to the \n number of observations and covariates. Please specify a less \n complex model to use KonFound-It.")
})
# Error Case 5: R2 is not less than FR2max
test_that("R2 less than FR2max check", {
expect_error(test_cop(est_eff = 0.4, std_err = 0.1, n_obs = 300, n_covariates = 5,
sdx = 1, sdy = 1, R2 = 0.6, eff_thr = 0, FR2max = 0.5, alpha = 0.05, tails = 2),
"R2 Max needs to be greater than R2")
})
# Error Case 6: FR2max is not less than 1
test_that("FR2max less than 1 check", {
expect_error(test_cop(est_eff = 0.4, std_err = 0.1, n_obs = 300, n_covariates = 5,
sdx = 1, sdy = 1, R2 = 0.5, eff_thr = 0, FR2max = 1, alpha = 0.05, tails = 2),
"Did not run! R2 Max needs to be less than 1.")
})
# Error Case 7: Check for non-positive Rxz^2
test_that("Non-positive Rxz^2 check", {
expect_error(test_cop(est_eff = 0.4, std_err = 0.1, n_obs = 300, n_covariates = 5,
sdx = 1, sdy = 1, R2 = 0.99, eff_thr = 0, FR2max = 1.3, alpha = 0.05, tails = 2),
"Did not run! R2 Max needs to be less than 1.")
})
test_that("test_cop outputs the correct language and values when to_return is 'print'", {
# Mock input values
est_eff <- 0.5
std_err <- 0.1
n_obs <- 100
n_covariates <- 2
sdx <- 1
sdy <- 1
R2 <- 0.25
eff_thr <- 0.3
FR2max_multiplier <- 1.3
FR2max <- 0.3
alpha <- 0.05
tails <- 2
to_return <- "print"
delta_star <- 0.1 # example values
delta_exact <- 0.2
delta_pctbias <- 10.5
eff_x_M3_oster <- 0.15
eff_x_M3 <- 0.12
cond_RIR_fixedY <- 0.95
cond_RIR_null <- 0.85
cond_RIR_rxyz <- 0.75
# Capture the output
output <- capture.output(
test_cop(est_eff, std_err, n_obs, n_covariates, sdx, sdy, R2, eff_thr, FR2max_multiplier, FR2max, alpha, tails, to_return)
)
# Define expected lines
expected_lines <- c(
"Coefficient of Proportionality (COP):",
"",
"This function calculates a correlation-based coefficient of",
"proportionality (delta) as well as Oster's delta*.",
"",
"Delta* is 0.387 (assuming no covariates in the baseline model M1),",
"the correlation-based delta is 1.172, with a bias of -66.980%.",
"Note that %bias = (delta* - delta) / delta.",
"",
"With delta*, the coefficient in the final model will be 0.453.",
"With the correlation-based delta, the coefficient will be 0.300.",
"",
"Use to_return = \"raw_output\" to see more specific results and graphic",
"presentation of the result.",
"",
"This function also calculates conditional RIR that invalidates the statistical inference.",
"",
"If the replacement data points have a fixed value, then RIR = 80.035.",
"If the replacement data points follow a null distribution, then RIR = 55.317.",
"If the replacement data points satisfy rxy|Z = 0, then RIR = 56.317."
)
# Check each line against expected
expect_equal(output, expected_lines)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.