tests/testthat/test_lr.R

context("Linear Regression")

test_that("Simple linear regression matches lm()", {
  expect_equal(
    lm(wt ~ mpg, data = mtcars) %>%
      coef() %>%
      as.numeric(),
    mtcars %>%
      select(wt, mpg) %>%
      linear_regression_db(wt) %>%
      as.numeric()
  )
})

test_that("Two variable linear regression matches lm()", {
  expect_equal(
    lm(wt ~ mpg + qsec, data = mtcars) %>%
      coef() %>%
      as.numeric(),
    mtcars %>%
      select(wt, mpg, qsec) %>%
      linear_regression_db(wt) %>%
      as.numeric()
  )
})

test_that("Multiple variable linear regression matches lm()", {
  expect_equal(
    lm(wt ~ mpg + qsec + hp, data = mtcars) %>%
      coef() %>%
      as.numeric(),
    mtcars %>%
      select(wt, mpg, qsec, hp) %>%
      linear_regression_db(wt, sample_size = 32) %>%
      as.numeric()
  )
})

test_that("MLR matches lm() with auto_count set to TRUE", {
  expect_equal(
    lm(wt ~ mpg + qsec + hp, data = mtcars) %>%
      coef() %>%
      as.numeric(),
    mtcars %>%
      select(wt, mpg, qsec, hp) %>%
      linear_regression_db(wt, auto_count = TRUE) %>%
      as.numeric()
  )
})

test_that("MLR failes when auto_count set to FALSE and no sample_size is passed", {
  expect_error(
    mtcars %>%
      select(wt, mpg, qsec, hp) %>%
      linear_regression_db(wt, auto_count = FALSE)
  )
  expect_error(
    mtcars %>%
      select(wt, mpg, qsec, hp) %>%
      linear_regression_db(wt)
  )
})

test_that("mlr with grouping matches lm()", {
  expect_equal(
    mtcars %>%
      select(wt, mpg, qsec, hp, am) %>%
      group_by(am) %>%
      linear_regression_db(wt, auto_count = TRUE) %>%
      transpose() %>%
      map(~ as.numeric(.x)),
    0:1 %>%
      map(~ {
        mtcars %>%
          filter(am == .x) %>%
          lm(wt ~ mpg + qsec + hp, data = .) %>%
          coef() %>%
          as.numeric() %>%
          c(.x, .)
      })
  )
})
tidymodels/modeldb documentation built on Jan. 27, 2024, 8:42 a.m.