Liaw, Andy
2003-Dec-09 17:50 UTC
[R] problem with pls(x, y, ..., ncomp = 16): Error in inherit s( x, "data.frame") : subscript out of bounds
I don't know the details of pls (in the pls.pcr package, I assume), but if you use validation="CV", that says you want to use CV to select the best number of components. Then why would you specify ncomp as well? Andy> From: ryszard.czerminski at pharma.novartis.com > > When I try to use ncomp parameter in pls procedure I get > following error: > > > library(pls.pcr) > > m <- pls(x, y, validation = "CV", niter = 68, ncomp = 16) > Error in inherits(x, "data.frame") : subscript out of bounds > > Without ncomp parameter everything seems to work OK > > > dim(x) > [1] 68 116 > > dim(y) > [1] 68 1 > > m <- pls(x, y, validation = "CV", niter = 68) > > length(m$ncomp) > [1] 67 > > Ryszard > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > >
ryszard.czerminski@pharma.novartis.com
2003-Dec-09 18:56 UTC
[R] problem with pls(x, y, ..., ncomp = 16): Error in inherit s( x, "data.frame") : subscript out of bounds
Help for pls says:> ?pls[...] Arguments: ... ncomp: the numbers of latent variables to be assessed in the modelling. Default is from one to the rank of 'X'. [...] so my assumption was (maybe wrong) that idea of ncomp parameter is to limit number of assessed variables. also, if called without crossvalidation it gives the same error:> m <- pls(x, y, ncomp = 16)Error in inherits(x, "data.frame") : subscript out of bounds R "Liaw, Andy" <andy_liaw at merck.com> 12/09/2003 12:50 PM To: Ryszard Czerminski/PH/Novartis at PH, r-help at stat.math.ethz.ch cc: Subject: RE: [R] problem with pls(x, y, ..., ncomp = 16): Error in inherit s( x, "data.frame") : subscript out of bounds I don't know the details of pls (in the pls.pcr package, I assume), but if you use validation="CV", that says you want to use CV to select the best number of components. Then why would you specify ncomp as well? Andy> From: ryszard.czerminski at pharma.novartis.com > > When I try to use ncomp parameter in pls procedure I get > following error: > > > library(pls.pcr) > > m <- pls(x, y, validation = "CV", niter = 68, ncomp = 16) > Error in inherits(x, "data.frame") : subscript out of bounds > > Without ncomp parameter everything seems to work OK > > > dim(x) > [1] 68 116 > > dim(y) > [1] 68 1 > > m <- pls(x, y, validation = "CV", niter = 68) > > length(m$ncomp) > [1] 67 > > Ryszard > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > >
Liaw, Andy
2003-Dec-10 04:14 UTC
[R] problem with pls(x, y, ..., ncomp = 16): Error in inherit s( x, "data.frame") : subscript out of bounds
My first guess was wrong (should have RTFM...). Try: m <- pls(x, y, validation = "CV", niter = 68, ncomp = 1:16) I'm not familiar enough with SIMPLS to know whether it makes sense to pass ncomp of length 1 to pls(), but the code as is won't work (unless ncomp=1). The problem is in the following two lines inside simpls(): YvarExpl <- matrix(0, length(ncomp), npred) for (i in 1:max(ncomp)) YvarExpl[i, ] <- diag(cor(Y, X %*% B[, , i]))^2 If ncomp is of length 1, then YvarExpl is a 1x1 matrix, so the loop will bomb if ncomp > 1. [I'm CC'ing Prof. Wehrens, who is the package maintainer.] HTH, Andy> From: ryszard.czerminski at pharma.novartis.com > > Help for pls says: > > > ?pls > [...] > Arguments: > ... > ncomp: the numbers of latent variables to be assessed in the > modelling. Default is from one to the rank of 'X'. > [...] > > so my assumption was (maybe wrong) that idea of ncomp parameter is to > limit > number of assessed variables. > > also, if called without crossvalidation it gives the same error: > > > m <- pls(x, y, ncomp = 16) > Error in inherits(x, "data.frame") : subscript out of bounds > > R > > "Liaw, Andy" <andy_liaw at merck.com> > > I don't know the details of pls (in the pls.pcr package, I > assume), but if > you use validation="CV", that says you want to use CV to > select the best > number of components. Then why would you specify ncomp as well? > > Andy > > > From: ryszard.czerminski at pharma.novartis.com > > > > When I try to use ncomp parameter in pls procedure I get > > following error: > > > > > library(pls.pcr) > > > m <- pls(x, y, validation = "CV", niter = 68, ncomp = 16) > > Error in inherits(x, "data.frame") : subscript out of bounds > > > > Without ncomp parameter everything seems to work OK > > > > > dim(x) > > [1] 68 116 > > > dim(y) > > [1] 68 1 > > > m <- pls(x, y, validation = "CV", niter = 68) > > > length(m$ncomp) > > [1] 67 > > > > Ryszard > > > > ______________________________________________ > > R-help at stat.math.ethz.ch mailing list > > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > > > > > > > > > > >