kappa.stat <- function(o)
{
n <- sum(o)
e <- crossprod(apply(o,1,sum),apply(o,2,sum))/n
qo <- 1-(po <- sum(diag(o))/n)
qe <- 1-(pe <- sum(diag(e))/n)
kappa <- 1-qo/qe
sk <- sqrt(po*qo/(n*qe^2))
sk0 <- sqrt(pe/(n*qe))
result <- c(kappa, sk, sk0, kappa-qnorm(0.975)*sk, kappa+qnorm(0.975)*sk, kappa/sk0, pnorm(z,lower=F))
names(result) <- c("kappa", "sigma-kappa", "sigma-kappa-0", "95% lcl", "95% ucl", "Z value", "P value")
result
}
# example
x <- matrix(c(12,6,1, 3,19,4, 2,5,34), byrow=TRUE, 3)
kappa.stat(x)