Diff of /predict.voomDDA.R [000000] .. [81de4e]

Switch to side-by-side view

--- a
+++ b/predict.voomDDA.R
@@ -0,0 +1,47 @@
+predict.voomDDA = function(object, newdata){
+  
+  n = ncol(newdata)
+  p = nrow(newdata)
+  
+  disc = matrix(0, n, object$nclass)  ## Discriminant scores for each class
+  dimnames(disc) = list(colnames(newdata), object$classNames)
+  vm = voomGSD(data.train = object$counts, data.test = newdata, group = object$conditions, norm.method = object$normalization)
+  x = vm$TestExp
+
+  x2 = t(x)
+
+{
+if (object$PooledVar) {
+  vp = (object$weightedStats$weightedSD.pooled)^2
+  if (any(i0 <- vp == 0)) 
+    vp[i0] <- 1e-07 * min(vp[!i0])
+    ivp <- rep(1/vp, each = n)
+  for (k in 1:(object$nclass)) {
+    y = x2 - rep(object$weightedStats$weightedMean.C[, k], each = n)
+    disc[, k] = rowSums(y * y * ivp)
+  }
+}
+
+else {
+  if (FALSE) {
+    for (k in 1:(object$nclass)) {
+      x2 = x2 - rep(object$weightedStats$weightedMean.C[, k], each = n)
+      vsd = (object$weightedStats$weightedSD.C)^2
+      disc[, k] = rowSums((x2 * x2)/rep(vsd[, k], each = n)) + sum(log(vsd[, k]))
+    }
+  }
+  else {
+    vsd = (object$weightedStats$weightedSD.C)^2
+    for (k in 1:(object$nclass)) {
+      disc[, k] = apply(x2, 1, function(z) sum((z - object$weightedStats$weightedMean.C[, k])^2/vsd[, k])) + sum(log(vsd[, k]))
+    }
+  }
+}
+}
+
+idx = apply(disc, 1, which.min)
+pred = colnames(disc)[idx]
+if (inherits(attr(x2, "na.action"), "exclude")) 
+  pred = napredict(omit = attr(x2, "na.action"), pred)
+pred
+}
\ No newline at end of file