library("testthat")
#
# BAR regression
#
test_that("BAR simulated logistic regression - no intercept", {
set.seed(666)
p <- 20
n <- 1000
beta1 <- c(0.5, 0, 0, -1, 1.2)
beta2 <- seq(0, 0, length = p - length(beta1))
beta <- c(beta1,beta2)
x <- matrix(rnorm(p * n, mean = 0, sd = 1), ncol = p)
exb <- exp(x %*% beta)
prob <- exb / (1 + exb)
y <- rbinom(n, 1, prob)
cyclopsData <- createCyclopsData(y ~ x - 1,modelType = "lr")
bar <- fitCyclopsModel(cyclopsData, prior = createBarPrior("bic", fitBestSubset = TRUE),
control = createControl(noiseLevel = "silent"))
expect_equivalent(which(coef(bar) != 0.0), which(beta != 0.0))
# Determine MLE
non_zero <- which(beta != 0.0)
glm <- glm(y ~ x[,non_zero] - 1, family = binomial())
expect_equal(as.vector(coef(bar)[which(coef(bar) != 0.0)]), as.vector(coef(glm)), tolerance = 1E-6)
})
test_that("BAR simulated logistic regression - with intercept", {
set.seed(666)
p <- 20
n <- 1000
beta1 <- c(0.5, 0, 0, -1, 1.2)
beta2 <- seq(0, 0, length = p - length(beta1))
beta <- c(beta1,beta2)
x <- matrix(rnorm(p * n, mean = 0, sd = 1), ncol = p)
exb <- exp(x %*% beta)
prob <- exb / (1 + exb)
y <- rbinom(n, 1, prob)
cyclopsData <- createCyclopsData(y ~ x,modelType = "lr")
expect_warning(
bar <- fitCyclopsModel(cyclopsData, prior = createBarPrior("bic", fitBestSubset = TRUE),
control = createControl(noiseLevel = "silent"))
)
expect_equivalent(which(coef(bar) != 0.0), c(1, 1 + which(beta != 0.0)))
# Determine MLE
non_zero <- which(beta != 0.0)
glm <- glm(y ~ x[,non_zero], family = binomial())
expect_equal(as.vector(coef(bar)[which(coef(bar) != 0.0)]), as.vector(coef(glm)), tolerance = 1E-6)
})
test_that("BAR simulated logistic regression - no convergence", {
set.seed(666)
p <- 20
n <- 1000
beta1 <- c(0.5, 0, 0, -1, 1.2)
beta2 <- seq(0, 0, length = p - length(beta1))
beta <- c(beta1,beta2)
x <- matrix(rnorm(p * n, mean = 0, sd = 1), ncol = p)
exb <- exp(x %*% beta)
prob <- exb / (1 + exb)
y <- rbinom(n, 1, prob)
cyclopsData <- createCyclopsData(y ~ x,modelType = "lr")
expect_error(
bar <- fitCyclopsModel(cyclopsData, prior = createBarPrior("bic", exclude = "(Intercept)", fitBestSubset = TRUE,
maxIterations = 1),
control = createControl(noiseLevel = "silent")),
"Algorithm did not converge"
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.