Nothing
#
# This file tests the variogram-related low-level functions and indicators
#
# Make sure it works
context("Computation of variograms")
test_that("Computation of variograms works", {
# Here so that testthat does not complain about empty tests when missing packages
expect_true(TRUE)
if ( requireNamespace("gstat", quietly = TRUE) &&
requireNamespace("sp", quietly = TRUE) ) {
if ( exists("EXTENDED_TESTS") && EXTENDED_TESTS) {
mats <- list(arizona[[4]], forestgap[[8]], serengeti[[6]])
} else {
mats <- list(forestgap[[8]])
}
for ( example_mat in mats ) {
example_mat = serengeti[[6]]
nbins <- 32
nmax = 2e6L # 5e5L # prod(dim(example_mat)) ^2
cutoff = sqrt(ncol(example_mat)^2 + nrow(example_mat)^2) / 10
vario1 <- variogram_internal(example_mat, nmax, nbins, cutoff)
# pairs(vario1)
# Compare results to gstat
locations <- expand.grid(seq.int(nrow(example_mat)),
seq.int(ncol(example_mat)))
locations <- locations[sample.int(nrow(locations),
replace = FALSE,
size = min(nrow(locations),nmax/10)), ]
values <- apply(locations, 1, function(X) example_mat[X[1], X[2]])
locations.gstat <- sp::SpatialPointsDataFrame(locations,
data.frame(z = values))
vario2 <- gstat::variogram(z ~ 1,
data = locations.gstat,
width = cutoff / nbins,
cutoff = cutoff)
plot(vario1[ ,"dist"], vario1[ ,"gamma"] )
points(vario2[ ,"dist"], vario2[ ,"gamma"], col = "red", pch = 20)
vario1_2 <- approx(vario1[ ,1], vario1[ ,2], vario2[ ,"dist"])$y
# plot(vario1_2 - vario2[ ,"gamma"], vario2[ ,"gamma"])
# abline(0,1)
# The difference between the two variograms should be zero on average
mod <- coef(lm(vario1_2 - vario2[ ,'gamma'] ~ 1))
expect_true(abs(mod[1]) < 0.01) # Intercept ~= 0
# Test if P-value is significant, we expect it not to be
expect_true(kruskal.test(vario1_2, vario2[ ,"gamma"])$p.value > 0.1)
}
} # end of requireNamespace()
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.