#' @importFrom stats anova
#' @importFrom stats lm
#' @export
icc <-
  function(data)
  {
    score <- as.matrix(na.omit(data))
    n <- dim(score)[1]
    p <- dim(score)[2]
    data2 <- matrix(ncol=3,nrow=p*n)
    attr(score,"dim") <- c(p*n,1)
    data2[,1] <- score
    subject <- as.factor(rep(1:n,p))
    rater <- as.factor(rep(1:p,each=n))
    data2[,2] <- subject
    data2[,3] <- rater
    ms <- anova(lm(score~subject+rater))[[3]]
    names(ms) <- NULL
    v.s <- (ms[1]-ms[3])/p
    v.r <- (ms[2]-ms[3])/n
    res <- ms[3]
    icc.a <- v.s/(v.s+v.r+res)
    icc.c <- v.s/(v.s+res)
    result <- list("nb.subjects"=n,"nb.raters"=p,"subject.variance"=v.s,"rater.variance"=v.r,"residual"=res,"icc.consistency"=icc.c,"icc.agreement"=icc.a)
    result
  }
