tests/testthat/test-pkonfound.R

context("Checking pkonfound")

test_that("pkonfound test positive, significant coefficient works", {
    expect_equal(dplyr::pull(pkonfound(2, .4, 100, 3, to_return = "raw_output")[1, 3]), tolerance = .001, .603 * 100) # pct bias
    expect_equal(dplyr::pull(pkonfound(2, .4, 100, 3, to_return = "raw_output")[1, 7]), tolerance = .001, 0.568) # r-corr
    expect_equal(dplyr::pull(pkonfound(2, .4, 100, 3, to_return = "raw_output")[1, 8]), tolerance = .001, 0.322) # impact
})

test_that("pkonfound test negative, significant coefficient works", {
    expect_equal(dplyr::pull(pkonfound(-2, .4, 100, 3, to_return = "raw_output")[1, 3]), tolerance = .001, .603 * 100)
    expect_equal(dplyr::pull(pkonfound(-2, .4, 100, 3, to_return = "raw_output")[1, 7]), tolerance = .001, 0.568)
    expect_equal(dplyr::pull(pkonfound(-2, .4, 100, 3, to_return = "raw_output")[1, 8]), tolerance = .001, -0.322)
})

test_that("pkonfound test positive, not significant coefficient works", {
    # expect_equal(dplyr::pull(pkonfound(1, .4, 100, 3, to_return = "raw_output")[1, 3]), tolerance = .001, .206 * 100)
    expect_equal(dplyr::pull(pkonfound(1, .4, 100, 3, to_return = "raw_output")[1, 7]), tolerance = .001, 0.248)
    expect_equal(dplyr::pull(pkonfound(1, .4, 100, 3, to_return = "raw_output")[1, 8]), tolerance = .001, 0.061)
})

test_that("pkonfound test negative, not significant coefficient works", {
    # expect_equal(dplyr::pull(pkonfound(-1, .4, 100, 3, to_return = "raw_output")[1, 3]), tolerance = .001, 0.206 * 100)
    expect_equal(dplyr::pull(pkonfound(-1, .4, 100, 3, to_return = "raw_output")[1, 7]), tolerance = .001, 0.248)
    expect_equal(dplyr::pull(pkonfound(-1, .4, 100, 3, to_return = "raw_output")[1, 8]), tolerance = .001, -.061)
})

test_that("pkonfound creates the threshhold plot", {
    thresh_plot <- pkonfound(2, .4, 100, 3, to_return = "thresh_plot")
    
    expect_s3_class(thresh_plot, "ggplot")
    
    thresh_plot_null <- pkonfound(.01, .4, 100, 3, to_return = "thresh_plot")
    
    expect_s3_class(thresh_plot_null, "ggplot")
})

test_that("pkonfound creates the correlation plot", {
    corr_plot <- pkonfound(2, .4, 100, 3, to_return = "corr_plot")
    
    expect_s3_class(corr_plot, "ggplot")
    
    corr_plot_null <- pkonfound(.01, .4, 100, 3, to_return = "corr_plot")
    
    expect_s3_class(corr_plot_null, "ggplot")
})

expect_output(pkonfound(2, .4, 100, 3), ".")

## PSE and COP

test_that("PSE and COE work via pkonfound", {
    
    output4 <- pkonfound(est_eff = -.125,
                         std_err = .050,
                         n_obs = 6265,
                         n_covariates = 7,
                         sdx = .217,
                         sdy = .991,
                         R2 = .251,
                         eff_thr = 0,
                         FR2max = .61,
                         index = "COP",
                         to_return = "raw_output")
    
    output5 <- pkonfound(est_eff = .5,
                         std_err = .056,
                         n_obs = 6174,
                         eff_thr = .1,
                         sdx = 0.22,
                         sdy = 1,
                         R2 = .3,
                         index = "PSE",to_return = "raw_output")

    expect_equal(output4$delta_exact, tolerance = .001, 1.308) # COP - delta exact
    
    expect_equal(output5$`correlation between X and CV conditional on Z`, tolerance = .001, 0.247) # PSE
    expect_equal(output5$`correlation between Y and CV conditional on Z`, tolerance = .001, 0.372) # PSE
    expect_equal(output5$`correlation between X and CV`, tolerance = .001, 0.214) # PSE
    expect_equal(output5$`correlation between Y and CV`, tolerance = .001, 0.313) # PSE
})

test_that("PSE and COE work via pkonfound", {
    
    output6 <- pkonfound(est_eff = -.125,
                         std_err = .050,
                         n_obs = 6265,
                         n_covariates = 7,
                         sdx = .217,
                         sdy = .991,
                         R2 = .251,
                         eff_thr = 0,
                         FR2max = .61,
                         index = "COP",
                         to_return = "raw_output")
    
    expect_s3_class(output6$Figure, "ggplot")
})

## logistic

test_that("logistic models work with pkonfound", {
    
    output7 <- pkonfound(.273, .024, 16999, 3, n_treat = 16000, model_type = "logistic", to_return = "raw_output")$RIR
    
    expect_equal(output7, 1156)
    
    output8 <- pkonfound(.027, .024, 16999, 3, n_treat = 16000, model_type = "logistic", to_return = "raw_output")$RIR
    
    expect_equal(output8, 803)
    
    output8_print <- capture.output(pkonfound(.027, .024, 16999, 3, n_treat = 16000, model_type = "logistic", to_return = "print")$RIR)
    
    expect_true(length(output8_print) > 0)
    
    output9 <- pkonfound(.027, .024, 16999, 3, n_treat = 16000, replace = "entire",
                         model_type = "logistic", to_return = "raw_output")$RIR
    
    expect_equal(output9, 793)
    
    output10 <- pkonfound(.027, .024, 16999, 3, n_treat = 16000, switch_trm = FALSE,
                         model_type = "logistic", to_return = "raw_output")$RIR
    
    expect_equal(output10, 52)

})

## two by two table 

test_that("two by two works with pkonfound", {
    
    output11 <- pkonfound(a = 18, b = 12, c = 12, d = 17, to_return = "raw_output")$RIR
    expect_equal(output11, 8)
    
    output12 <- pkonfound(a = 18, b = 12, c = 12, d = 17, switch_trm = FALSE, to_return = "raw_output")$RIR
    expect_equal(output12, 5)
    
    output13 <- pkonfound(a = 18, b = 3, c = 12, d = 1, test = "chisq", to_return = "raw_output")$RIR
    expect_equal(output13, 6)
    
    output14 <- pkonfound(a = 18, b = 1, c = 12, d = 1, switch_trm = FALSE, to_return = "raw_output")$RIR
    expect_equal(output14, 5)
})

test_that("pkonfound printed output works for a positive case", {
    outputa <- capture.output(pkonfound(2, .4, 100, 3, to_return = "print", index = "RIR"))
    expect_true(length(outputa) > 0)
    
    outputb <- capture.output(pkonfound(2, .4, 100, 3, to_return = "print", index = "IT"))
    expect_true(length(outputb) > 0)
    
    outputc <- capture.output(pkonfound(.01, .4, 100, 3, to_return = "print", index = "RIR"))
    expect_true(length(outputa) > 0)
    
    outputd <- capture.output(pkonfound(.01, .4, 100, 3, to_return = "print", index = "IT"))
    expect_true(length(outputb) > 0)
})

test_that("pkonfound printed output works for a negative case", {
    output <- capture.output(pkonfound(-2.2, .65, 200, 3, to_return = "print", index = "RIR"))
    expect_true(length(output) > 0)
    
    output <- capture.output(pkonfound(-2.2, .65, 200, 3, to_return = "print", index = "IT"))
    expect_true(length(output) > 0)
    
    output <- capture.output(pkonfound(-.01, .65, 200, 3, to_return = "print", index = "RIR"))
    expect_true(length(output) > 0)
    
    output <- capture.output(pkonfound(-.01, .65, 200, 3, to_return = "print", index = "IT"))
    expect_true(length(output) > 0)
})
jrosen48/konfound documentation built on April 13, 2024, 3:47 a.m.