# linear_reg, set_engine, fit ----
test_that("parsnip works with a formula for the `covariance` specification outside of `fit()`", {
skip_if_not_installed("parsnip", minimum_version = "1.1.0")
result <- expect_silent(
parsnip::linear_reg() |>
parsnip::set_engine(
"mmrm",
control = mmrm_control(method = "Satterthwaite"),
covariance = ~ us(AVISIT | USUBJID)
) |>
parsnip::fit(FEV1 ~ RACE + ARMCD * AVISIT, fev_data)
)
expect_s3_class(result, "model_fit")
})
test_that("parsnip works with a `as.cov_struct` for the `covariance` specification outside of `fit()`", {
skip_if_not_installed("parsnip", minimum_version = "1.1.0")
result <- expect_silent(
parsnip::linear_reg() |>
parsnip::set_engine(
"mmrm",
control = mmrm_control(method = "Satterthwaite"),
covariance = as.cov_struct(~ us(AVISIT | USUBJID))
) |>
parsnip::fit(FEV1 ~ RACE + ARMCD * AVISIT, fev_data)
)
expect_s3_class(result, "model_fit")
})
test_that("parsnip works with the covariance structure in the formula in `fit()`", {
skip_if_not_installed("parsnip", minimum_version = "1.1.0")
result <- expect_silent(
parsnip::linear_reg() |>
parsnip::set_engine("mmrm", control = mmrm_control(method = "Satterthwaite")) |>
parsnip::fit(FEV1 ~ RACE + ARMCD * AVISIT + us(AVISIT | USUBJID), fev_data)
)
expect_s3_class(result, "model_fit")
})
# predict ----
test_that("parsnip works with predict", {
skip_if_not_installed("parsnip", minimum_version = "1.1.0")
model <- parsnip::linear_reg() |>
parsnip::set_engine("mmrm", control = mmrm_control(method = "Satterthwaite")) |>
parsnip::fit(FEV1 ~ RACE + ARMCD * AVISIT + us(AVISIT | USUBJID), fev_data)
result <- expect_silent(predict(model, new_data = fev_data))
expect_tibble(result)
expect_names(names(result), identical.to = ".pred")
})
test_that("parsnip allows to pass additional arguments to predict with type `raw` via `opts`", {
skip_if_not_installed("parsnip", minimum_version = "1.1.0")
model <- parsnip::linear_reg() |>
parsnip::set_engine("mmrm", control = mmrm_control(method = "Satterthwaite")) |>
parsnip::fit(FEV1 ~ RACE + ARMCD * AVISIT + us(AVISIT | USUBJID), fev_data)
result <- expect_silent(predict(
model,
new_data = fev_data,
type = "raw",
opts = list(
interval = "prediction",
nsim = 10L,
se.fit = TRUE
)
))
expect_matrix(result)
expect_names(colnames(result), identical.to = c("fit", "se", "lwr", "upr"))
expect_true(all(result[is.na(fev_data$FEV1), "se"] > 0))
})
# augment ----
test_that("parsnip works with augment and using `new_data`", {
skip_if_not_installed("parsnip", minimum_version = "1.1.0")
model <- parsnip::linear_reg() |>
parsnip::set_engine("mmrm", control = mmrm_control(method = "Satterthwaite")) |>
parsnip::fit(FEV1 ~ RACE + ARMCD * AVISIT + us(AVISIT | USUBJID), fev_data)
result <- expect_silent(augment(model, new_data = fev_data))
expect_tibble(result)
expect_names(names(result), must.include = c(".pred", ".resid"))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.