context("dredge_regression")
library(magrittr)
#library(testthat)
rm(list = ls())
set.seed(0)
seqcol <- 1:10
seqcol_tosmall <- 1:2
chrcol <- rep(c("a", "b"), c(10,10))
y2 <- c(rnorm(10), rnorm(10, mean = 2))
y3 <- c(rnorm(10, mean = 2), rnorm(10, mean = 4))
y4 <- y3 + 1
y6 <- 1:10 + 1 %>% as.integer()
y7 <- c("q", "w", "e", "r", "t", "y", "u", "i", "o", "p")
empty_grid <-
data.frame(
formula = character())
#### parameters invalid on its face ####
# bad df
expect_error(
NULL %>%
dredge_regression(
grid = empty_grid,
min_pvalue = 0,
max_pvalue = 0.05),
"data %>% is.data.frame()",
fixed = T)
# not enough rows
expect_error(
data.frame(seqcol_tosmall) %>%
dredge_regression(
grid = empty_grid,
min_pvalue = 0,
max_pvalue = 0.05),
"data %>% nrow() >= 3",
fixed = T)
# bad grid
expect_error(
data.frame(seqcol) %>%
dredge_regression(
grid = NULL,
min_pvalue = 0,
max_pvalue = 0.05),
"grid %>% is.data.frame()",
fixed = T)
# bad min_pvalue
expect_error(
data.frame(seqcol) %>%
dredge_regression(
grid = empty_grid,
min_pvalue = "a",
max_pvalue = 0.05),
"min_pvalue %>% is.numeric()",
fixed = T)
# min_pvalue too small
expect_error(
data.frame(seqcol) %>%
dredge_regression(
grid = empty_grid,
min_pvalue = -1,
max_pvalue = 0.05),
"min_pvalue >= 0",
fixed = T)
# min_pvalue too big
expect_error(
data.frame(seqcol) %>%
dredge_regression(
grid = empty_grid,
min_pvalue = 1,
max_pvalue = 0.05),
"min_pvalue < 1",
fixed = T)
# bad max_pvalue
expect_error(
data.frame(seqcol) %>%
dredge_regression(
grid = empty_grid,
min_pvalue = 0,
max_pvalue = "a"),
"max_pvalue %>% is.numeric()",
fixed = T)
# max_pvalue too small
expect_error(
data.frame(seqcol) %>%
dredge_regression(
grid = empty_grid,
min_pvalue = 0,
max_pvalue = -1),
"max_pvalue >= 0",
fixed = T)
# max_pvalue too big
expect_error(
data.frame(seqcol) %>%
dredge_regression(
grid = empty_grid,
min_pvalue = 0,
max_pvalue = 1),
"max_pvalue < 1",
fixed = T)
# bad pvalue range
expect_error(
data.frame(seqcol) %>%
dredge_regression(
grid = empty_grid,
min_pvalue = .5,
max_pvalue = .25),
"min_pvalue < max_pvalue",
fixed = T)
#### bad regression issues ####
# perfect numeric continuous regression
data <- data.frame(a = y3, b = y4, stringsAsFactors = F)
grid <-
data %>%
make_regression_grid(max_columns = 4, beam_width = 1000)
actual <-
data %>%
dredge_regression(
grid = grid,
min_pvalue = 1e-10,
max_pvalue = 0.05)
expect_equal(actual %>% nrow(), 0)
# perfect integer continuous regression
data <- data.frame(a = seqcol, b = y6, stringsAsFactors = F)
grid <-
data %>%
make_regression_grid(max_columns = 4, beam_width = 1000)
actual <-
data %>%
dredge_regression(
grid = grid,
min_pvalue = 0,
max_pvalue = 0.05)
expect_equal(actual %>% nrow(), 0)
# perfect numeric ~ categorical regression
data <- data.frame(a = seqcol, b = y7, stringsAsFactors = F)
grid <-
data %>%
make_regression_grid(max_columns = 4, beam_width = 1000)
actual <-
data %>%
dredge_regression(
grid = grid,
min_pvalue = 0,
max_pvalue = 0.05)
expect_equal(actual %>% nrow(), 0)
# perfect integer ~ categorical regression
data <- data.frame(a = y6, b = y7, stringsAsFactors = F)
grid <-
data %>%
make_regression_grid(max_columns = 4, beam_width = 1000)
actual <-
data %>%
dredge_regression(
grid = grid,
min_pvalue = 0,
max_pvalue = 0.05)
expect_equal(actual %>% nrow(), 0)
#### normal analysis ####
# empty grid
data <- data.frame(a = chrcol, b = y2, stringsAsFactors = F)
actual <-
data %>%
dredge_regression(
grid = empty_grid,
min_pvalue = 0,
max_pvalue = 0.05)
expect_equal(actual %>% nrow(), 0)
# categorical predicts continuous
data <-
data.frame(a = chrcol, b = y2, stringsAsFactors = F) %>%
adjust_grid_for_regression()
grid <-
data %>%
make_regression_grid(max_columns = 4, beam_width = 1000)
actual <-
data %>%
dredge_regression(
grid = grid,
min_pvalue = 0,
max_pvalue = 0.05)
expected <- data.frame(
formula = c("b~a"),
best_pvalue = c(0.01135),
adjusted_r_squared = c(0.26782),
stringsAsFactors = F)
expect_equal(actual, expected, tolerance = 0.001)
# continuous predicts continuous
data <-
data.frame(a = y2, b = y3, stringsAsFactors = F) %>%
adjust_grid_for_regression()
grid <-
data %>%
make_regression_grid(max_columns = 4, beam_width = 1000)
actual <-
data %>%
dredge_regression(
grid = grid,
min_pvalue = 0,
max_pvalue = 0.05)
expected <- data.frame(
formula = c("b~a", "a~b"),
best_pvalue = c(0.01400, 0.01400),
adjusted_r_squared = c(0.25210, 0.25210),
stringsAsFactors = F)
expect_equal(actual, expected, tolerance = 0.001)
# mixed case test
data <-
data.frame(a = chrcol, b = y2, c = y3, stringsAsFactors = F) %>%
adjust_grid_for_regression()
grid <-
data %>%
make_regression_grid(max_columns = 4, beam_width = 1000)
actual <-
data %>%
dredge_regression(
grid = grid,
min_pvalue = 0,
max_pvalue = 0.05)
expected <- data.frame(
formula = c("c~b*a", "c~b", "b~c", "b~a", "c~a"),
best_pvalue = c(0.00029, 0.01400, 0.01400, 0.01135, 0),
adjusted_r_squared = c(0.67321, 0.25210, 0.25210, 0.26782, 0.67155),
stringsAsFactors = F)
expect_equal(actual, expected, tolerance = 0.001)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.