context("sar_pred")
library(sars)
test_that("sar_pred on ind model fit returns correct results", {
data(galap)
fit <- sar_loga(galap)
p <- sar_pred(fit, area = 5000)
expect_is(p, "sars")
expect_true(is.data.frame(p))
expect_equal(p$Area, 5000)
expect_equal(round(p$Prediction, 2), 258.19)
expect_match(as.character(p$Model), "Logarithmic")
})
test_that("sar_pred on fit_collection returns correct results", {
data(galap)
fit2 <- sar_multi(galap, obj = c("power", "koba", "ratio"),
grid_start = "none")
p2 <- sar_pred(fit2, area = c(5000, 50000))
expect_equal(nrow(p2), 6)
expect_equal(round(p2$Prediction[4], 2), 382.84)
expect_match(as.character(p2$Model[3]), "Kobayashi")
expect_error(sar_pred(fit2, area = "a"))
})
test_that("sar_pred on multi-model curve returns correct results", {
skip_on_cran()
#grid_start has a random component and so it is hard to use it to test,
#as it can produce different sar_pred values each time it is run. So here
#I have used grid_start = none except for the last.
data(niering)
#verb = FALSE as heleg has singular gradient warning
fit3 <- sar_average(data = niering, grid_start = "none", verb = FALSE)
p3 <- sar_pred(fit3, area = c(50, 500))
expect_equal(nrow(p3), 2)
expect_equal(round(p3$Prediction[2], 2), 53.14)
expect_match(as.character(p3$Model[1]), "Multi")
#verb = FALSE as heleg has singular gradient warning
fit4 <- sar_average(data = niering, normaTest = "lillie",
homoTest = "cor.fitted", grid_start = "none", verb = FALSE)
p4 <- sar_pred(fit4, area = c(50, 500))
expect_equal(round(p4$Prediction[2], 2), 116.58)
fit5 <- sar_average(data = niering, normaTest = "lillie",
grid_start = "none", verb = FALSE)
p5 <- sar_pred(fit5, area = c(50, 500))
expect_equal(round(p5$Prediction[2], 2), 47.3)
#test it using grid_start = exhaustive, which for this always seems to give the
#same answer (in contrast to = partial). But exclude more complex models for
#speed
obj = c("linear","power","powerR","epm1","epm2","p1",
"p2","loga","koba","logistic","monod","negexpo",
"weibull3","asymp","ratio",
"weibull4", "heleg")
fit5 <- sar_average(data = niering, obj = obj, normaTest = "lillie",
grid_start = "exhaustive", grid_n = 1000)
p5 <- sar_pred(fit5, area = c(50, 500))
expect_equal(round(p5$Prediction[2], 2), 16.76)
#nb. the expected richness for 500 here is lower than when no grid_start is
#used and this is because grid_start improves the epm1 model which becomes
#the best model but which starts to decrease toward the final richness point,
#and thus so does the mmi curve.
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.