Nothing
tol <- 1e-4
test_that("Symm works with >2 factors", {
# Table 8.5, Analysis of Ordinal Categorical Data, Agresti 2010 p242
df8_5 <- data.frame(
A = rep(1:3, each = 9),
B = rep(rep(1:3, each = 3), times = 3),
C = rep(1:3, times = 9),
Freq = c(6, 4, 5, 3, 13, 10, 1, 8, 14,
2, 3, 2, 1, 3, 1, 2, 1, 2,
1, 0, 2, 0, 0, 0, 1, 1, 0)
)
ind <- expand.grid(1:3, 1:3, 1:3)
ord_ind <- t(apply(ind, 1, sort))
ref <- do.call("paste", c(as.data.frame(ord_ind), sep = ":"))
expect_equal(with(df8_5, Symm(A, B, C)), as.factor(ref))
# with named levels not in alphabetical order
lev <- c("Red", "Blue", "Green")
df8_5_nm <- data.frame(
A = factor(rep(lev, each = 9), lev = lev),
B = factor(rep(rep(lev, each = 3), times = 3), lev = lev),
C = factor(rep(lev, times = 9), lev = lev),
Freq = c(6, 4, 5, 3, 13, 10, 1, 8, 14,
2, 3, 2, 1, 3, 1, 2, 1, 2,
1, 0, 2, 0, 0, 0, 1, 1, 0)
)
res <- with(df8_5_nm, Symm(A, B, C))
ord_lev <- apply(ord_ind, 2, function(x) lev[x])
ref <- do.call("paste", c(as.data.frame(ord_lev), sep = ":"))
ref <- factor(ref, unique(ref))
expect_equal(with(df8_5_nm, Symm(A, B, C)), ref)
# still works if factor elements are not in order
scramble <- c(5, 12, 10, 23, 11, 15, 22, 6, 7, 21, 8, 19, 20,
25, 17, 16, 1, 18, 2, 14, 24, 26, 3, 13, 27, 4, 9)
expect_equal(with(df8_5_nm[scramble,], Symm(A, B, C)),
ref[scramble])
# works for partial data - 3 x 3 x 2 array
ref2 <- ref[df8_5_nm$C != "Green"]
expect_equal(with(subset(df8_5_nm, C != "Green"), Symm(A, B, C)),
droplevels(factor(ref2, levels(ref))))
# works for partial data - 2 x 2 x 3 array
ref3 <- ref[df8_5_nm$A != "Green" & df8_5_nm$B != "Green"]
expect_equal(with(subset(df8_5_nm, A != "Green" & B != "Green"),
Symm(A, B, C)),
droplevels(factor(ref3, levels(ref))))
})
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.