Many thanks David. That works. Looks then this error will always occur in predict.multinom whenever the data argument is missing in the mutlinom fit, but the data argument is optional as per documentation. Best, Lars. On Sun, Jun 26, 2016 at 3:14 PM, David Winsemius <dwinsemius at comcast.net> wrote:> > > On Jun 26, 2016, at 11:32 AM, Lars Bishop <lars52r at gmail.com> wrote: > > > > Thanks Bert. > > > > But I it doesn't complain when predict is used on X instead of X_new > > (using nnet_7.3-12), which is even more puzzling to me: > > > > pred <- predict(fit, X, type = "probs") > > Indeed: There is a predict.multinom function and it does have 'probs' as > an acceptable argument to type: > > I got success (or at least an absence of an error message) with: > > #---------- > X <- data.frame(matrix( 3 * runif(length(ysim)), nrow = 300, ncol = 3)) > X_new <- data.frame(matrix( 3 * runif(length(ysim)), nrow = 200, ncol > 3)) > str(X) > > 'data.frame': 300 obs. of 3 variables: > $ X1: num 0.797 1.116 1.719 2.725 0.605 ... > $ X2: num 0.797 1.116 1.719 2.725 0.605 ... > $ X3: num 0.797 1.116 1.719 2.725 0.605 ... > > fit <- multinom(y ~ ., data=X, trace = FALSE) > pred <- predict(fit, setNames(X_new, names(X)), type = "probs") > > > head(pred) > ysim1 ysim2 ysim3 > 1 0.3519378 0.3517418 0.2963204 > 2 0.3135513 0.3138573 0.3725915 > 3 0.3603779 0.3600461 0.2795759 > 4 0.3572297 0.3569498 0.2858206 > 5 0.3481512 0.3480128 0.3038360 > 6 0.3813310 0.3806118 0.2380572 > > #------------ > > > > head(pred) > > ysim1 ysim2 ysim3 > > 1 0.3059421 0.3063284 0.3877295 > > 2 0.3200219 0.3202551 0.3597230 > > 3 0.3452414 0.3451460 0.3096125 > > 4 0.3827077 0.3819603 0.2353320 > > 5 0.2973288 0.2977994 0.4048718 > > 6 0.3817027 0.3809759 0.2373214 > > > > Thanks again, > > Lars. > > > > > > On Sun, Jun 26, 2016 at 1:05 PM, Bert Gunter <bgunter.4567 at gmail.com> > wrote: > > > >> Well, for one thing, there is no "probs" method for predict.nnet, at > >> least in my version: nnet_7.3-12 > >> > >> Cheers, > >> Bert > >> > >> > >> Bert Gunter > >> > >> "The trouble with having an open mind is that people keep coming along > >> and sticking things into it." > >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > >> > >> > >> On Sun, Jun 26, 2016 at 9:27 AM, Lars Bishop <lars52r at gmail.com> wrote: > >>> Hello, > >>> > >>> I'd appreciate your help in spotting the reason for the error and > warning > >>> messages below. > >>> > >>> library(nnet) > >>> set.seed(1) > >>> ysim <- gl(3, 100) > >>> y <- model.matrix(~ysim -1) > >>> X <- matrix( 3 * runif(length(ysim)), nrow = 300, ncol = 3) > >>> X_new <- matrix( 3 * runif(length(ysim)), nrow = 200, ncol = 3) > >>> > >>> fit <- multinom(y ~ X, trace = FALSE) > >>> pred <- predict(fit, X_new, type = "probs") > >>> > >>> Error in predict.multinom(fit, X_new, type = "probs") : > >>> NAs are not allowed in subscripted assignments > >>> In addition: Warning message: > >>> 'newdata' had 200 rows but variables found have 300 rows > >>> > >>> Thanks, > >>> Lars. > >>> > >>> [[alternative HTML version deleted]] > >>> > >>> ______________________________________________ > >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > >>> https://stat.ethz.ch/mailman/listinfo/r-help > >>> PLEASE do read the posting guide > >> http://www.R-project.org/posting-guide.html > >>> and provide commented, minimal, self-contained, reproducible code. > >> > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > David Winsemius > Alameda, CA, USA > >[[alternative HTML version deleted]]
> On Jun 26, 2016, at 12:39 PM, Lars Bishop <lars52r at gmail.com> wrote: > > Many thanks David. That works. Looks then this error will always occur in predict.multinom whenever the data argument is missing in the mutlinom fit, but the data argument is optional as per documentation.I don't agree with that analysis. The problem occurs because of a mismatch of names in the new data argument. With your original code this runs without error: pred <- predict(fit, setNames(data.frame(X_new),c("X1","X2","X3") ), type = "probs") -- David.> > Best, > Lars. > > On Sun, Jun 26, 2016 at 3:14 PM, David Winsemius <dwinsemius at comcast.net> wrote: > > > On Jun 26, 2016, at 11:32 AM, Lars Bishop <lars52r at gmail.com> wrote: > > > > Thanks Bert. > > > > But I it doesn't complain when predict is used on X instead of X_new > > (using nnet_7.3-12), which is even more puzzling to me: > > > > pred <- predict(fit, X, type = "probs") > > Indeed: There is a predict.multinom function and it does have 'probs' as an acceptable argument to type: > > I got success (or at least an absence of an error message) with: > > #---------- > X <- data.frame(matrix( 3 * runif(length(ysim)), nrow = 300, ncol = 3)) > X_new <- data.frame(matrix( 3 * runif(length(ysim)), nrow = 200, ncol = 3)) > str(X) > > 'data.frame': 300 obs. of 3 variables: > $ X1: num 0.797 1.116 1.719 2.725 0.605 ... > $ X2: num 0.797 1.116 1.719 2.725 0.605 ... > $ X3: num 0.797 1.116 1.719 2.725 0.605 ... > > fit <- multinom(y ~ ., data=X, trace = FALSE) > pred <- predict(fit, setNames(X_new, names(X)), type = "probs") > > > head(pred) > ysim1 ysim2 ysim3 > 1 0.3519378 0.3517418 0.2963204 > 2 0.3135513 0.3138573 0.3725915 > 3 0.3603779 0.3600461 0.2795759 > 4 0.3572297 0.3569498 0.2858206 > 5 0.3481512 0.3480128 0.3038360 > 6 0.3813310 0.3806118 0.2380572 > > #------------ > > > > head(pred) > > ysim1 ysim2 ysim3 > > 1 0.3059421 0.3063284 0.3877295 > > 2 0.3200219 0.3202551 0.3597230 > > 3 0.3452414 0.3451460 0.3096125 > > 4 0.3827077 0.3819603 0.2353320 > > 5 0.2973288 0.2977994 0.4048718 > > 6 0.3817027 0.3809759 0.2373214 > > > > Thanks again, > > Lars. > > > > > > On Sun, Jun 26, 2016 at 1:05 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote: > > > >> Well, for one thing, there is no "probs" method for predict.nnet, at > >> least in my version: nnet_7.3-12 > >> > >> Cheers, > >> Bert > >> > >> > >> Bert Gunter > >> > >> "The trouble with having an open mind is that people keep coming along > >> and sticking things into it." > >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > >> > >> > >> On Sun, Jun 26, 2016 at 9:27 AM, Lars Bishop <lars52r at gmail.com> wrote: > >>> Hello, > >>> > >>> I'd appreciate your help in spotting the reason for the error and warning > >>> messages below. > >>> > >>> library(nnet) > >>> set.seed(1) > >>> ysim <- gl(3, 100) > >>> y <- model.matrix(~ysim -1) > >>> X <- matrix( 3 * runif(length(ysim)), nrow = 300, ncol = 3) > >>> X_new <- matrix( 3 * runif(length(ysim)), nrow = 200, ncol = 3) > >>> > >>> fit <- multinom(y ~ X, trace = FALSE) > >>> pred <- predict(fit, X_new, type = "probs") > >>> > >>> Error in predict.multinom(fit, X_new, type = "probs") : > >>> NAs are not allowed in subscripted assignments > >>> In addition: Warning message: > >>> 'newdata' had 200 rows but variables found have 300 rows > >>> > >>> Thanks, > >>> Lars. > >>> > >>> [[alternative HTML version deleted]] > >>> > >>> ______________________________________________ > >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > >>> https://stat.ethz.ch/mailman/listinfo/r-help > >>> PLEASE do read the posting guide > >> http://www.R-project.org/posting-guide.html > >>> and provide commented, minimal, self-contained, reproducible code. > >> > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > David Winsemius > Alameda, CA, USA > >David Winsemius Alameda, CA, USA
Thanks, David. Sorry, do you mean this? library(nnet) set.seed(1) ysim <- gl(3, 100) y <- model.matrix(~ysim -1) X <- matrix( 3 * runif(length(ysim)), nrow = 300, ncol = 3) X_new <- matrix( 3 * runif(length(ysim)), nrow = 200, ncol = 3) fit <- multinom(y ~ X, trace = FALSE) pred <- predict(fit, setNames(data.frame(X_new),c("X1","X2","X3") ), type "probs") Error in predict.multinom(fit, setNames(data.frame(X_new), c("X1", "X2", : NAs are not allowed in subscripted assignments In addition: Warning message: 'newdata' had 200 rows but variables found have 300 rows On Sun, Jun 26, 2016 at 3:46 PM, David Winsemius <dwinsemius at comcast.net> wrote:> > > On Jun 26, 2016, at 12:39 PM, Lars Bishop <lars52r at gmail.com> wrote: > > > > Many thanks David. That works. Looks then this error will always occur > in predict.multinom whenever the data argument is missing in the mutlinom > fit, but the data argument is optional as per documentation. > > I don't agree with that analysis. The problem occurs because of a mismatch > of names in the new data argument. With your original code this runs > without error: > > pred <- predict(fit, setNames(data.frame(X_new),c("X1","X2","X3") ), type > = "probs") > > -- > David. > > > > Best, > > Lars. > > > > On Sun, Jun 26, 2016 at 3:14 PM, David Winsemius <dwinsemius at comcast.net> > wrote: > > > > > On Jun 26, 2016, at 11:32 AM, Lars Bishop <lars52r at gmail.com> wrote: > > > > > > Thanks Bert. > > > > > > But I it doesn't complain when predict is used on X instead of X_new > > > (using nnet_7.3-12), which is even more puzzling to me: > > > > > > pred <- predict(fit, X, type = "probs") > > > > Indeed: There is a predict.multinom function and it does have 'probs' as > an acceptable argument to type: > > > > I got success (or at least an absence of an error message) with: > > > > #---------- > > X <- data.frame(matrix( 3 * runif(length(ysim)), nrow = 300, ncol = 3)) > > X_new <- data.frame(matrix( 3 * runif(length(ysim)), nrow = 200, ncol > 3)) > > str(X) > > > > 'data.frame': 300 obs. of 3 variables: > > $ X1: num 0.797 1.116 1.719 2.725 0.605 ... > > $ X2: num 0.797 1.116 1.719 2.725 0.605 ... > > $ X3: num 0.797 1.116 1.719 2.725 0.605 ... > > > > fit <- multinom(y ~ ., data=X, trace = FALSE) > > pred <- predict(fit, setNames(X_new, names(X)), type = "probs") > > > > > head(pred) > > ysim1 ysim2 ysim3 > > 1 0.3519378 0.3517418 0.2963204 > > 2 0.3135513 0.3138573 0.3725915 > > 3 0.3603779 0.3600461 0.2795759 > > 4 0.3572297 0.3569498 0.2858206 > > 5 0.3481512 0.3480128 0.3038360 > > 6 0.3813310 0.3806118 0.2380572 > > > > #------------ > > > > > > > head(pred) > > > ysim1 ysim2 ysim3 > > > 1 0.3059421 0.3063284 0.3877295 > > > 2 0.3200219 0.3202551 0.3597230 > > > 3 0.3452414 0.3451460 0.3096125 > > > 4 0.3827077 0.3819603 0.2353320 > > > 5 0.2973288 0.2977994 0.4048718 > > > 6 0.3817027 0.3809759 0.2373214 > > > > > > Thanks again, > > > Lars. > > > > > > > > > On Sun, Jun 26, 2016 at 1:05 PM, Bert Gunter <bgunter.4567 at gmail.com> > wrote: > > > > > >> Well, for one thing, there is no "probs" method for predict.nnet, at > > >> least in my version: nnet_7.3-12 > > >> > > >> Cheers, > > >> Bert > > >> > > >> > > >> Bert Gunter > > >> > > >> "The trouble with having an open mind is that people keep coming along > > >> and sticking things into it." > > >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > >> > > >> > > >> On Sun, Jun 26, 2016 at 9:27 AM, Lars Bishop <lars52r at gmail.com> > wrote: > > >>> Hello, > > >>> > > >>> I'd appreciate your help in spotting the reason for the error and > warning > > >>> messages below. > > >>> > > >>> library(nnet) > > >>> set.seed(1) > > >>> ysim <- gl(3, 100) > > >>> y <- model.matrix(~ysim -1) > > >>> X <- matrix( 3 * runif(length(ysim)), nrow = 300, ncol = 3) > > >>> X_new <- matrix( 3 * runif(length(ysim)), nrow = 200, ncol = 3) > > >>> > > >>> fit <- multinom(y ~ X, trace = FALSE) > > >>> pred <- predict(fit, X_new, type = "probs") > > >>> > > >>> Error in predict.multinom(fit, X_new, type = "probs") : > > >>> NAs are not allowed in subscripted assignments > > >>> In addition: Warning message: > > >>> 'newdata' had 200 rows but variables found have 300 rows > > >>> > > >>> Thanks, > > >>> Lars. > > >>> > > >>> [[alternative HTML version deleted]] > > >>> > > >>> ______________________________________________ > > >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > >>> https://stat.ethz.ch/mailman/listinfo/r-help > > >>> PLEASE do read the posting guide > > >> http://www.R-project.org/posting-guide.html > > >>> and provide commented, minimal, self-contained, reproducible code. > > >> > > > > > > [[alternative HTML version deleted]] > > > > > > ______________________________________________ > > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > > https://stat.ethz.ch/mailman/listinfo/r-help > > > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > > > and provide commented, minimal, self-contained, reproducible code. > > > > David Winsemius > > Alameda, CA, USA > > > > > > David Winsemius > Alameda, CA, USA > >[[alternative HTML version deleted]]