Dear all, can anybody help me with the program below? The function predict.lda seems to be defined but cannot be used by errortest. The R version is 1.7.1 Thanks in advance, Stefan ---------------- library("MASS"); library("ipred"); data(iris3); tr <- sample(1:50, 25); train <- rbind(iris3[tr,,1], iris3[tr,,2], iris3[tr,,3]); test <- rbind(iris3[-tr,,1], iris3[-tr,,2], iris3[-tr,,3]); cl <- factor(c(rep("s",25), rep("c",25), rep("v",25))); z <- lda(train, cl); predict(z, test)$class; data.frame(class=cl, train); flowers <- data.frame(class=cl, train); errorest(class ~ ., data=flowers, model=lda, estimator="cv", predict=predict.lda); Error-Message is : Error: Object "predict.lda" not found
>>>>> "Stefan" == Stefan B?hringer <commercial at s-boehringer.de> >>>>> on 09 Jan 2004 16:46:23 +0100 writes:Stefan> Dear all, can anybody help me with the program Stefan> below? The function predict.lda seems to be defined Stefan> but cannot be used by errortest. Stefan> The R version is 1.7.1 >> library("MASS"); >> library("ipred"); >> >> data(iris3); >> tr <- sample(1:50, 25); >> train <- rbind(iris3[tr,,1], iris3[tr,,2], iris3[tr,,3]); >> test <- rbind(iris3[-tr,,1], iris3[-tr,,2], iris3[-tr,,3]); >> cl <- factor(c(rep("s",25), rep("c",25), rep("v",25))); >> z <- lda(train, cl); >> predict(z, test)$class; >> >> data.frame(class=cl, train); >> flowers <- data.frame(class=cl, train); >> errorest(class ~ ., data=flowers, model=lda, estimator="cv", >> predict=predict.lda); Stefan> Error-Message is : Stefan> Error: Object "predict.lda" not found predict.lda is not exported from new versions of MASS since one should use predict( <lda-fit> , ...). i.e., I presume that errorest(class ~ ., data=flowers, model=lda, estimator="cv", predict=predict) will work. BTW: Please, remove the ";" at the end of lines. In S code, they are just plain ugly. Martin Maechler <maechler at stat.math.ethz.ch> http://stat.ethz.ch/~maechler/ Seminar fuer Statistik, ETH-Zentrum LEO C16 Leonhardstr. 27 ETH (Federal Inst. Technology) 8092 Zurich SWITZERLAND phone: x-41-1-632-3408 fax: ...-1228 <><
On 9 Jan 2004, Stefan B?hringer wrote:> can anybody help me with the program below? The function predict.lda > seems to be defined but cannot be used by errortest.Precisely. You should not be calling a method directly and in any case that is not what is needed here. ?errorest shows you a correct example, so why not follow it?> The R version is 1.7.1You are overdue for an update then. See what the posting guide asks you to do if you find a problem and are not using the current version.> > Thanks in advance, > > Stefan > > ---------------- > library("MASS"); > library("ipred"); > > data(iris3); > tr <- sample(1:50, 25); > train <- rbind(iris3[tr,,1], iris3[tr,,2], iris3[tr,,3]); > test <- rbind(iris3[-tr,,1], iris3[-tr,,2], iris3[-tr,,3]); > cl <- factor(c(rep("s",25), rep("c",25), rep("v",25))); > z <- lda(train, cl); > predict(z, test)$class; > > data.frame(class=cl, train); > flowers <- data.frame(class=cl, train); > errorest(class ~ ., data=flowers, model=lda, estimator="cv", > predict=predict.lda); > > Error-Message is : > Error: Object "predict.lda" not found > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
Stefan B?hringer wrote:> Dear all, > > can anybody help me with the program below? The function predict.lda > seems to be defined but cannot be used by errortest. > > The R version is 1.7.1R-1.8.1 is recent. predict.lda() is hidden in a namespace, so you cannot access it that way. Please use the generic (predict(), which calls the method) rather than calling methods directly. However, predict.lda() won't work in errorest() (not errortest, BTW) as is. Use an own function like mypredict.lda() which looks like: mypredict.lda <- function(object, newdata) predict(object, newdata = newdata)$class which is given in the examples of ?errorest. Uwe Ligges> Thanks in advance, > > Stefan > > ---------------- > library("MASS"); > library("ipred"); > > data(iris3); > tr <- sample(1:50, 25); > train <- rbind(iris3[tr,,1], iris3[tr,,2], iris3[tr,,3]); > test <- rbind(iris3[-tr,,1], iris3[-tr,,2], iris3[-tr,,3]); > cl <- factor(c(rep("s",25), rep("c",25), rep("v",25))); > z <- lda(train, cl); > predict(z, test)$class; > > data.frame(class=cl, train); > flowers <- data.frame(class=cl, train); > errorest(class ~ ., data=flowers, model=lda, estimator="cv", > predict=predict.lda); > > Error-Message is : > Error: Object "predict.lda" not found > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html