[R] Fixes for pls.pcr 0.2.2 plot.mvr("prediction")
Frank J. Iannarilli, Jr.
frankeye at cox.net
Thu Sep 2 23:06:56 CEST 2004
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. frankeye at cox.net
www.aerodyne.com/cosr/cosr.html
More information about the R-help
mailing list