Hi,

I just sent the following bugfixes to author Ron Wehrens, but thought I should also make them available here. This fixes the prediction plots, which are currently erroneous.

=======================


I found some bugs in the the plot.mvr() function, in the plottype="prediction" section:



1. Needs to set nscreens <- 1 for condition where length(which) = 1 AND length(nlv) = 1. Otherwise, for such condition, the function exits with message "Error: Object nscreens not found". Here is your code snippet, and my suggested addition is indicated by ========>>>>>>>>>>:


       if (length(which) > 1) {
           if (length(nlv) > 3) {
               par(ask = TRUE)
               par(mfrow = c(3, 2))
               nScreens <- ceiling(length(nlv)/3)
           }
           else {
               nScreens <- 1
               par(mfrow = c(length(nlv), 2))
           }
       }
       else {
           if (length(nlv) > 1) {
               nrow <- floor(sqrt(length(nlv)))
               mfrow <- c(nrow, ceiling(length(nlv)/nrow))
               par(mfrow = mfrow)
               nScreens <- 1
           }
======>>>>>nScreens <- 1
       }


2. The prediction plots are being drawn based on incorrect indexing of the Ypred matrix -- this can be quite misleading :-) Here is your code snippet: Basically, need to replace all occurrences of
mvrmodel$training$Ypred[, i, j] or mvrmodel$validat$Ypred[, i, j]
WITH
mvrmodel$training$Ypred[, i, nlv[j]] or mvrmodel$validat$Ypred[, i, nlv[j]]




for (j in indices) {
if (show[1]) {
plot(mvrmodel$Y[, i], mvrmodel$training$Ypred[,
i, j], xlab = "Measured", ylab = "Predicted",
type = "n", xlim = range(mvrmodel$Y[, i],
mvrmodel$training$Ypred[, i, j]), ylim = range(mvrmodel$Y[,
i], mvrmodel$training$Ypred[, i, j]),
main = paste("Training data\n", nlv[j],
"latent variables"))
if (npred > 1)
mtext(ynames[i])
abline(0, 1, col = "blue")
points(mvrmodel$Y[, i], mvrmodel$training$Ypred[,
i, j])
}
if (show[2]) {
plot(mvrmodel$Y[, i], mvrmodel$validat$Ypred[,
i, j], xlab = "Measured", ylab = "Predicted",
type = "n", xlim = range(mvrmodel$Y[, i],
mvrmodel$validat$Ypred[, i, j]), ylim = range(mvrmodel$Y[,
i], mvrmodel$validat$Ypred[, i, j]),
main = paste("Cross-validation data\n",
nlv[j], "latent variables"))
if (npred > 1)
mtext(ynames[i])
abline(0, 1, col = "blue")
points(mvrmodel$Y[, i], mvrmodel$validat$Ypred[,
i, j])



Regards,





Frank J. Iannarilli, Jr.  [EMAIL PROTECTED]
www.aerodyne.com/cosr/cosr.html

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to