Nothing
test_that("normalize with 'none' returns input with zeroed diagonal", {
A <- matrix(c(10, 3, 1, 3, 8, 2, 1, 2, 5), nrow = 3,
dimnames = list(c("a", "b", "c"), c("a", "b", "c")))
result <- normalize(A, "none")
expect_equal(as.matrix(result), A)
})
test_that("association strength: s_ij = c_ij / (w_i * w_j)", {
A <- matrix(c(10, 3, 1, 3, 8, 2, 1, 2, 5), nrow = 3,
dimnames = list(c("a", "b", "c"), c("a", "b", "c")))
S <- as.matrix(normalize(A, "association"))
## s_ab = 3 / (10 * 8) = 0.0375
expect_equal(S["a", "b"], 3 / (10 * 8), tolerance = tol)
## s_ac = 1 / (10 * 5) = 0.02
expect_equal(S["a", "c"], 1 / (10 * 5), tolerance = tol)
## s_bc = 2 / (8 * 5) = 0.05
expect_equal(S["b", "c"], 2 / (8 * 5), tolerance = tol)
## Diagonal should be zero
expect_equal(S["a", "a"], 0)
})
test_that("cosine normalization: s_ij = c_ij / sqrt(w_i * w_j)", {
A <- matrix(c(10, 3, 1, 3, 8, 2, 1, 2, 5), nrow = 3,
dimnames = list(c("a", "b", "c"), c("a", "b", "c")))
S <- as.matrix(normalize(A, "cosine"))
expect_equal(S["a", "b"], 3 / sqrt(10 * 8), tolerance = tol)
expect_equal(S["a", "c"], 1 / sqrt(10 * 5), tolerance = tol)
expect_equal(S["b", "c"], 2 / sqrt(8 * 5), tolerance = tol)
})
test_that("jaccard normalization: s_ij = c_ij / (w_i + w_j - c_ij)", {
A <- matrix(c(10, 3, 1, 3, 8, 2, 1, 2, 5), nrow = 3,
dimnames = list(c("a", "b", "c"), c("a", "b", "c")))
S <- as.matrix(normalize(A, "jaccard"))
expect_equal(S["a", "b"], 3 / (10 + 8 - 3), tolerance = tol)
expect_equal(S["a", "c"], 1 / (10 + 5 - 1), tolerance = tol)
expect_equal(S["b", "c"], 2 / (8 + 5 - 2), tolerance = tol)
})
test_that("inclusion normalization: s_ij = c_ij / min(w_i, w_j)", {
A <- matrix(c(10, 3, 1, 3, 8, 2, 1, 2, 5), nrow = 3,
dimnames = list(c("a", "b", "c"), c("a", "b", "c")))
S <- as.matrix(normalize(A, "inclusion"))
expect_equal(S["a", "b"], 3 / min(10, 8), tolerance = tol)
expect_equal(S["a", "c"], 1 / min(10, 5), tolerance = tol)
expect_equal(S["b", "c"], 2 / min(8, 5), tolerance = tol)
})
test_that("equivalence normalization: s_ij = c_ij^2 / (w_i * w_j)", {
A <- matrix(c(10, 3, 1, 3, 8, 2, 1, 2, 5), nrow = 3,
dimnames = list(c("a", "b", "c"), c("a", "b", "c")))
S <- as.matrix(normalize(A, "equivalence"))
expect_equal(S["a", "b"], 3^2 / (10 * 8), tolerance = tol)
expect_equal(S["a", "c"], 1^2 / (10 * 5), tolerance = tol)
expect_equal(S["b", "c"], 2^2 / (8 * 5), tolerance = tol)
})
test_that("normalize handles zero diagonal gracefully", {
A <- matrix(c(0, 2, 2, 0), nrow = 2,
dimnames = list(c("x", "y"), c("x", "y")))
S <- as.matrix(normalize(A, "association"))
## With zero diagonal, all entries should be 0 (no division by zero errors)
expect_true(all(is.finite(S)))
})
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.