context("params_lm.R unit tests")
library("MASS")
p_ex <- params_lm(coefs = matrix(c(1, 2), nrow = 1),
sigma = 2)
# params_lm() works as expected ------------------------------------------------
test_that("params_lm works with matrix coefficients", {
expect_equal(p_ex$sigma, 2)
})
test_that("params_lm automatically names matrix columns", {
expect_equal(colnames(p_ex$coefs), c("x1", "x2"))
})
test_that("params_lm works with data.frame coefficients", {
p <- params_lm(coefs = data.frame(intercept = c(1, 2)),
sigma = 2)
expect_equal(p$coefs[, "intercept"], c(1, 2))
})
test_that("params_lm works with default sigma", {
p <- params_lm(coefs = data.frame(intercept = c(1, 2)))
expect_equal(p$sigma, c(1, 1))
})
# params_lm() throws errors ----------------------------------------------------
test_that("params_lm throws error if numbers of samples are inconsistent ", {
expect_error(
params_lm(coefs = c(1, 3, 2), sigma = c(2, 2)),
"Number of samples in 'sigma' is not equal to the number of samples in 'coefs'"
)
})
test_that("params_lm throws error if sigma is not numeric", {
expect_error(
params_lm(coefs = matrix(c(1, 2), nrow = 1),
sigma = "cat"),
"is.numeric(sigma) is not TRUE",
fixed = TRUE
)
})
# summary_params.lm() ----------------------------------------------------------
test_that("summary.params_lm()", {
ps <- summary(p_ex)
expect_equal(ps$term, c("x1", "x2", "sigma"))
expect_equal(ps$parameter, c("mean", "mean", "sd"))
expect_equal(unname(unlist(ps[term == "x1", .(mean, `2.5%`, `97.5%`)])),
rep(1, 3))
})
# print_params.lm() ------------------------------------------------------------
test_that("print.params_lm()", {
expect_output(print(p_ex), "A \"params_lm\" object")
expect_output(print(p_ex), "Summary of coefficients:")
expect_output(print(p_ex), "Summary of sigma:")
})
# create_params.lm() -----------------------------------------------------------
medcost_fit <- lm(costs ~ female + state_name,
data = psm4_exdata$costs$medical)
test_that("create_params.lm works with point estimates", {
# point estimates
p <- create_params(medcost_fit, n = 5, uncertainty = "none")
expect_equal(p$coefs[, ], coef(medcost_fit))
expect_equal(p$sigma, summary(medcost_fit)$sigma)
expect_equal(colnames(p$coefs), names(medcost_fit$coefficients))
})
test_that("create_params.lm works with PSA", {
set.seed(101)
p <- create_params(medcost_fit, n = 2, uncertainty = "normal")
set.seed(101)
r <- mvrnorm(n = 2, medcost_fit$coefficients, vcov(medcost_fit))
expect_equal(p$coefs, r)
})
test_that("create_params.lm works with PSA and sample size of 1", {
p <- create_params(medcost_fit, n = 1, uncertainty = "normal")
expect_true(inherits(p, "params_lm"))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.