test_that("2D modelling on the globe", {
skip_on_cran()
local_bru_safe_inla()
withr::local_seed(123L)
options <- list(
control.inla = list(
int.strategy = "eb"
)
)
mesh <- fm_rcdt_2d_inla(globe = 2)
data <- data.frame(
Long = rep(seq(-179, 179, length.out = 10), times = 10),
Lat = rep(seq(-89, 89, length.out = 10), each = 10)
)
data <- within(
data,
expr = {
y <- rpois(nrow(data), exp(1 + sin(Lat / 180 * pi) * 2))
}
)
data <- sf::st_as_sf(data,
coords = c("Long", "Lat"),
crs = fm_crs("longlat_globe")
)
data <- fm_transform(data, crs = fm_crs("sphere"))
matern <- INLA::inla.spde2.pcmatern(
mesh,
prior.range = c(0.1, 0.01),
prior.sigma = c(0.1, 0.01)
)
cmp <- y ~ mySmooth(main = geometry, model = matern) - 1
fit <- bru(
cmp,
data = data,
family = "poisson",
options = options
)
expect_s3_class(fit, "bru")
expect_equal(
fit$summary.hyperpar["Range for mySmooth", "mean"],
2.7076690,
tolerance = midtol
)
expect_equal(
fit$summary.hyperpar["Stdev for mySmooth", "mean"],
0.5524327,
tolerance = midtol
)
})
test_that("2D LGCP modelling on the globe", {
skip_on_cran()
local_bru_safe_inla()
withr::local_seed(123L)
options <- list(
control.inla = list(
int.strategy = "eb"
)
)
mesh <- fm_rcdt_2d_inla(globe = 2, crs = fm_crs("sphere"))
data <- data.frame(
Long = rep(seq(0, 360 * 9 / 10, length.out = 10), times = 10),
Lat = 180 / pi * asin(rep(
seq(1 / 90, 89 / 90, length.out = 10)^0.5,
each = 10
))
)
data <- sf::st_as_sf(data,
coords = c("Long", "Lat"),
crs = fm_crs("longlat_globe")
)
data <- fm_transform(data, crs = fm_crs("sphere"))
cmp <- geometry ~
field(main = sf::st_coordinates(geometry), model = "fixed") +
Intercept(1)
expect_equal(
sum(fm_int(mesh)$weight),
4 * pi
)
fit <- bru(
cmp,
data = data,
family = "cp",
domain = list(geometry = mesh),
options = options
)
expect_s3_class(fit, "bru")
expect_equal(
fit$summary.random$field[, "mean"],
c(0, 0, 2.840911),
tolerance = midtol
)
expect_equal(
fit$summary.random$field[, "sd"],
c(0.2089972, 0.2089972, 0.2968185),
tolerance = midtol
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.