Skip to content

Commit

Permalink
test for DItoErrormetric
Browse files Browse the repository at this point in the history
  • Loading branch information
HannaMeyer committed Mar 11, 2024
1 parent 9bbb391 commit e34378e
Showing 1 changed file with 83 additions and 0 deletions.
83 changes: 83 additions & 0 deletions tests/testthat/test-DItoErrormetric.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@

test_that("DItoErrormetric works in default settings", {
data(splotdata)
splotdata <- sf::st_drop_geometry(splotdata)
predictors <- terra::rast(system.file("extdata","predictors_chile.tif", package="CAST"))

set.seed(100)
model <- caret::train(splotdata[,6:16], splotdata$Species_richness, ntree = 10,
trControl = caret::trainControl(method = "cv", savePredictions = TRUE))

AOA <- CAST::aoa(predictors, model)

# DI ~ error
errormodel_DI <- DItoErrormetric(model, AOA, variable = "DI")

expected_error_DI = terra::predict(AOA$DI, errormodel_DI)



#test model fit:
expect_equal(round(as.numeric(summary(errormodel_DI$fitted.values)),2),
c(14.25, 14.34, 15.21, 17.23, 18.70, 27.46))
# test model predictions
expect_equal(as.vector( summary(values(expected_error_DI))),
c("Min. :14.26 ", "1st Qu.:27.46 ", "Median :27.46 ",
"Mean :26.81 ", "3rd Qu.:27.46 ","Max. :27.47 ",
"NA's :17678 "))
})


test_that("DItoErrormetric works in with LPD", {
data(splotdata)
splotdata <- sf::st_drop_geometry(splotdata)
predictors <- terra::rast(system.file("extdata","predictors_chile.tif", package="CAST"))

set.seed(100)
model <- caret::train(splotdata[,6:16], splotdata$Species_richness, ntree = 10,
trControl = caret::trainControl(method = "cv", savePredictions = TRUE))

AOA <- CAST::aoa(predictors, model, LPD = TRUE, maxLPD = 1)
errormodel_LPD <- DItoErrormetric(model, AOA, variable = "LPD")
expected_error_LPD = terra::predict(AOA$LPD, errormodel_LPD)


#test model fit:
expect_equal(round(as.numeric(summary(errormodel_LPD$fitted.values)),2),
c(16.36, 16.36, 16.36, 16.36, 16.36, 16.36))
# test model predictions
expect_equal(as.vector(summary(values(expected_error_LPD))),
c("Min. :16.36 ", "1st Qu.:16.36 ", "Median :16.36 ",
"Mean :16.36 ", "3rd Qu.:16.36 ",
"Max. :16.36 ", "NA's :17678 "))

})



test_that("DItoErrormetric works for multiCV", {
data(splotdata)
splotdata <- sf::st_drop_geometry(splotdata)
predictors <- terra::rast(system.file("extdata","predictors_chile.tif", package="CAST"))

set.seed(100)
model <- caret::train(splotdata[,6:16], splotdata$Species_richness, ntree = 10,
trControl = caret::trainControl(method = "cv", savePredictions = TRUE))

AOA <- CAST::aoa(predictors, model)
# with multiCV = TRUE (for DI ~ error)
set.seed(100)
errormodel_DI = suppressWarnings(DItoErrormetric(model, AOA, multiCV = TRUE, length.out = 3))
expected_error_DI = terra::predict(AOA$DI, errormodel_DI)

#test model fit:
expect_equal(round(as.numeric(summary(errormodel_DI$fitted.values)),2),
c(12.53, 17.21, 26.80, 26.19, 35.28, 35.30))
# test model predictions
expect_equal(as.vector( summary(values(expected_error_DI))),
c("Min. :13.11 ", "1st Qu.:32.58 ", "Median :35.05 ",
"Mean :32.54 ", "3rd Qu.:35.30 ",
"Max. :35.30 ", "NA's :17678 "))


})

0 comments on commit e34378e

Please sign in to comment.