Nothing
test_that("Gaussian total variation can be computed", {
### identity
m <- c(0, 0)
S <- diag(2)
tv <- gaussian_tv(m, m, S, S, method = "auto")
expect_equal(tv, 0, tolerance = 1e-10)
### symmetry
set.seed(1)
m1 <- c(0, 0); m2 <- c(1, -1)
S1 <- diag(2)
S2 <- matrix(c(1.5, 0.3, 0.3, 1.2), 2)
tv_a <- gaussian_tv(m1, m2, S1, S2, method = "mc", n = 1000)
tv_b <- gaussian_tv(m2, m1, S2, S1, method = "mc", n = 1000)
expect_equal(tv_a, tv_b, tolerance = 0.05)
### equal covariances
s2 <- 1; Sig1D <- matrix(s2, 1, 1)
for (d in c(0, 0.5, 1, 2, 3)) {
mu1 <- 0; mu2 <- d
tv_num <- gaussian_tv(mu1, mu2, Sig1D, Sig1D, method = "auto")
tv_ref <- 1 - 2 * pnorm(-abs(mu1 - mu2) / (2 * sqrt(s2)))
expect_equal(tv_num, tv_ref, tolerance = 1e-12)
}
### cubature method
mean1 <- 0
mean2 <- 1
Sigma1 <- 1
Sigma2 <- 1.5
tv_cub <- gaussian_tv(mean1, mean2, Sigma1, Sigma2, method = "cubature")
expect_equal(tv_cub, 0.35, tolerance = 0.05)
### monotonicity
ds <- c(0, 0.25, 0.5, 1, 2)
tvs <- vapply(
ds,
function(d) gaussian_tv(0, d, Sig1D, Sig1D, method = "auto"), numeric(1)
)
expect_true(all(diff(tvs) >= -1e-10))
})
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.