R/lda.R
dfe8a46c
 #Computing Miss Error and MiPP after LDA
 get.mipp.lda <- function(x.train, y.train, x.test, y.test){
      
      y <- y.train
      dat.train <- cbind(x.train, y)
      y <- y.test
      dat.test  <- cbind(x.test, y)
 
      if(is.data.frame(dat.train)==FALSE) dat.train <- data.frame(dat.train)
      if(is.data.frame(dat.test)==FALSE) dat.test <- data.frame(dat.test)
      colnames(dat.train) <- c(1:ncol(x.train), "y")
      colnames(dat.test)  <- c(1:ncol(x.test), "y")
 
      fit <- lda(y ~ ., dat.train)
      out <- predict(fit, dat.test)
 
      u.class <- unique(colnames(out$post))
      n.class <- length(u.class)
 
      True.class <- dat.test$y
      Pred.class <- out$class
 
      post.prob <-0
      for(j in 1:n.class) {
          i <- which(True.class == u.class[j]) 
c716b947
          post.prob <- post.prob + sum(out$post[i,j,drop=FALSE])
dfe8a46c
      }
 
      N <- length(True.class) 
      nMiss <- N- sum(True.class == Pred.class) 
      Er <- nMiss/nrow(dat.test)
      MiPP <- post.prob - nMiss
      sMiPP <- MiPP/N
      return(list(N.Miss=nMiss, ErrorRate=Er, MiPP=MiPP, sMiPP=sMiPP))
 }