Nothing
context("glmnet")
# TODO: better separation of simpleMM, glmnet
test_that("method dispatch works", {
x <- as.matrix(mtcars[-1])
y <- mtcars$mpg
mod00 <- glmnet::glmnet(x, y)
mod0 <- glmnet(x, y)
mod1 <- glmnet(mpg ~ ., data=mtcars)
expect_s3_class(mod1, "glmnet.formula")
expect_equal(mod00$beta, mod0$beta)
expect_equal(mod0$beta, mod1$beta)
})
test_that("simple model matrix works", {
mod1 <- glmnet(mpg ~ ., data=mtcars, use.model.frame=TRUE)
mod2 <- glmnet(mpg ~ ., data=mtcars, use.model.frame=FALSE)
expect_equal(mod1$beta, mod2$beta)
})
test_that("glmnet arguments work", {
x <- as.matrix(iris[-5])
y <- as.matrix(iris$Species)
mod00 <- glmnet::glmnet(x, y, family="multinomial", alpha=0.5)
mod0 <- glmnet(x, y, family="multinomial", alpha=0.5)
mod1 <- glmnet(Species ~ ., data=iris, family="multinomial")
expect_equivalent(mod00$beta, mod0$beta)
expect_equivalent(mod0$beta, mod1$beta)
data(Insurance, package="MASS")
# don't worry about ordered factors for now
class(Insurance$Group) <- "factor"
class(Insurance$Age) <- "factor"
x <- model.matrix(~ District + Group + Age, data=Insurance)[, -1]
y <- Insurance$Claims
ofs <- Insurance$Holders
mod00 <- glmnet::glmnet(x, y, family="poisson", offset=log(ofs))
mod0 <- glmnet(x, y, family="poisson", offset=log(ofs))
mod1 <- glmnet(Claims ~ District + Group + Age, data=Insurance, family="poisson", offset=log(Holders),
use.model.frame=TRUE)
expect_equivalent(mod00$beta, mod0$beta)
expect_equivalent(mod0$beta, mod1$beta)
})
test_that("predict and coef work", {
x <- as.matrix(iris[-5])
y <- iris$Species
mod1.0 <- glmnet(x, y, family="multinomial")
mod1.1 <- glmnet(Species ~ ., data=iris, family="multinomial", use.model.frame=TRUE)
mod1.2 <- glmnet(Species ~ ., data=iris, family="multinomial", use.model.frame=FALSE)
pred1.0 <- predict(mod1.0, as.matrix(iris[-5]), type="class")
pred1.1 <- predict(mod1.1, iris, type="class")
pred1.2 <- predict(mod1.2, iris, type="class")
expect_equivalent(pred1.0, pred1.1) # expect_equivalent because dimnames not always preserved
expect_equivalent(pred1.1, pred1.2)
coef1.0 <- coef(mod1.0)
coef1.1 <- coef(mod1.1)
coef1.2 <- coef(mod1.2)
expect_equal(coef1.0, coef1.1)
expect_equal(coef1.1, coef1.2)
x <- as.matrix(mtcars[-1])
y <- mtcars$mpg
mod2.0 <- glmnet(x, y, alpha=0.5)
mod2.1 <- glmnet(mpg ~ ., data=mtcars, alpha=0.5, use.model.frame=TRUE)
mod2.2 <- glmnet(mpg ~ ., data=mtcars, alpha=0.5, use.model.frame=FALSE)
pred2.0 <- predict(mod2.0, x, s=1)
pred2.1 <- predict(mod2.1, mtcars, s=1)
pred2.2 <- predict(mod2.2, mtcars, s=1)
expect_equivalent(pred2.0, pred2.1)
expect_equivalent(pred2.1, pred2.2)
coef2.0 <- coef(mod2.0, s=1)
coef2.1 <- coef(mod2.1, s=1)
coef2.2 <- coef(mod2.2, s=1)
expect_equal(coef2.0, coef2.1)
expect_equal(coef2.1, coef2.2)
})
test_that("prediction with NA works", {
data(Boston, package="MASS")
BostonNA <- Boston
BostonNA[1, ] <- NA
mod1.1 <- glmnet(medv ~ ., data=Boston, alpha=0, use.model.frame=TRUE)
mod1.2 <- glmnet(medv ~ ., data=Boston, alpha=0, use.model.frame=FALSE)
pred1.1 <- predict(mod1.1, BostonNA, na.action=na.exclude)
pred1.2 <- predict(mod1.2, BostonNA, na.action=na.exclude)
expect_equivalent(pred1.1, pred1.2)
expect(all(!is.na(pred1.1)), "NAs found with na.exclude")
pred1.3 <- predict(mod1.1, BostonNA, na.action=na.pass)
pred1.4 <- predict(mod1.2, BostonNA, na.action=na.pass)
expect_equivalent(pred1.3, pred1.4)
expect(all(is.na(pred1.3[1, ])), "NAs dropped with na.pass")
})
test_that("matrix y works", {
df <- data.frame(x1 = rnorm(100), x2 = rnorm(100), y = rbinom(100, 10, 0.5))
df$ny <- 10 - df$y
mod1.1 <- glmnet(cbind(ny, y) ~ x1 + x2, data = df, family = "binomial", use.model.frame = TRUE)
mod1.2 <- glmnet(cbind(ny, y) ~ x1 + x2, data = df, family = "binomial", use.model.frame = FALSE)
pred1.1 <- predict(mod1.1, df)
pred1.2 <- predict(mod1.2, df)
expect_equivalent(pred1.1, pred1.2)
})
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.