1

Good evening,

I found the classAgreement function from package e1071 in R very useful and informative when working with contingency tables.

It works great with 2-dimensions. But if I have 3 or more dimensions it doesn't work.

I have reviewed several books, papers and web pages, and still cannot find a built-in function that works as classAgreement() with more than 2 dimensions.

Does anybody know a function/package in R that can do that?

If it doesn't exist, can somebody point me in the right direction for building a function that works with 3 dimensions in cross-validation?

Thank you.

agstudy
  • 119,832
  • 17
  • 199
  • 261
Diego
  • 824
  • 2
  • 9
  • 18

1 Answers1

2

You can use apply, with the third margin index. For example:

g1 <- sample(1:5, size=1000, replace=TRUE) 
g2 <- sample(1:5, size=1000, replace=TRUE)
g3 <- sample(1:5, size=1000, replace=TRUE)
tab <- table(g1, g2,g3)
apply(tab,3,classAgreement)

EDIT to get the diagonal elements

res <- apply(tab,3,classAgreement)
sapply(res, '[[','diag')
        1         2         3         4         5 
0.2146341 0.2029703 0.2227488 0.1513761 0.2073171 
sum(sapply(res, '[[','diag'))
[1] 0.9990465
agstudy
  • 119,832
  • 17
  • 199
  • 261
  • Thank you agstudy!!! That looks great. One final question. How can I summarize the diagonal in one single number? – Diego Mar 06 '13 at 00:28