context("EOF")
data(geopotential)
test_that("EOF runs", {
expect_s3_class({
EOF(gh ~ lat + lon | date, data = geopotential, n = 1)
}, "eof")
})
test_that("EOF, returns correct PCs", {
expect_equal(nrow(EOF(gh ~ lat + lon | date, data = geopotential, n = 2)$sdev), 1)
})
test_that("EOF uses bootstrap", {
expect_s3_class({
data(geopotential)
EOF(gh ~ lat + lon | date, data = geopotential, n = 1, B = 10)
}, "eof")
})
test_that("can use differnet engine", {
set.seed(40)
# with this seed, the base::svd result has a different sign.
expect_equal(
EOF(gh ~ lat + lon | date, data = geopotential, engine = base::svd)$left[, gh := -gh],
EOF(gh ~ lat + lon | date, data = geopotential, n = 1)$left
)
})
test_that("EOF works inside data.table", {
expect_equal(geopotential[, EOF(gh ~ lon + lat | date)$left],
EOF(gh ~ lon + lat | date, data = geopotential)$left)
})
test_that("EOF rotates", {
expect_identical(
round(EOF(gh ~ lon + lat | date, data = geopotential, n = 1:2, rotate = function(x) stats::varimax(x, normalize = FALSE))$sdev$sd),
c(1424982, 542271)
)
expect_equal(
EOF(gh ~ lon + lat | date, data = geopotential, n = 1:2,
rotate = function(x) stats::varimax(x, normalize = FALSE))$sdev$sd,
expect_warning(EOF(gh ~ lon + lat | date, data = geopotential, n = 1:2,
rotate = TRUE)$sdev$sd, "deprecated"))
})
test_that("EOF fails gracefully", {
expect_error(EOF(gh ~ lon + lat | date, data = geopotential, fill = "a"))
expect_error(EOF(gh ~ lon1 + lat2 | date, data = geopotential),
"Columns not found in data: lon1, lat2")
expect_error(EOF(gh ~ lon | date, data = geopotential),
"The formula gh ~ lon | date does not identify an unique observation for each cell.")
})
test_that("eof methods", {
eof <- EOF(gh ~ lat + lon | date, data = geopotential, n = 1:5,
engine = base::svd) # need to force this engine so that predict is exact
eof_12 <- cut(eof, 1:2)
expect_s3_class(eof_12, "eof")
expect_equal(as.character(unique(eof_12$left$PC)), c("PC1", "PC2"))
expect_equal(as.character(unique(eof_12$right$PC)), c("PC1", "PC2"))
expect_equal(as.character(unique(eof_12$sdev$PC)), c("PC1", "PC2"))
expect_true(inherits(screeplot(eof), "gg"))
expect_true(inherits(autoplot(eof), "gg"))
eof_all <- EOF(gh ~ lat + lon | date, data = geopotential, n = NULL,
engine = base::svd)
expect_equal(geopotential[, .(lat, lon, date, gh)][order(lat, lon, date)],
predict(eof_all)[order(lat, lon, date)])
expect_equal(predict(eof_all, n = 1:5), predict(eof))
expect_known_output(summary(eof), file = "eof_summary")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.