Marc: 1. I am aware of the need to explicitly name arguments after ... -- see the R Language definition where this can be inferred from the argument matching rules.
2. I am aware of the stated exception for poly(). However: > x1 <- runif(20) > x2 <- runif(20) > mx <- cbind(x1,x2) > poly(mx,2) Error in poly(dots[[i]], degree, raw = raw, simple = raw) : 'degree' must be less than number of unique points > poly(mx, degree = 2) 1.0 2.0 0.1 1.1 0.2 [1,] -0.2984843 0.0402593349 -0.07095761 0.021179734 -0.22909595 [2,] 0.2512177 0.2172530896 0.29620999 0.074413206 0.14508422 [3,] 0.2775652 0.3085750335 -0.13955410 -0.038735366 -0.13729529 [4,] -0.4090782 0.4032189266 -0.14737858 0.060289370 -0.12358925 [5,] -0.1631886 -0.2221937915 -0.26690975 0.043556631 0.16814432 [6,] 0.1770952 0.0009863446 0.25380650 0.044947925 0.02737265 [7,] -0.2108146 -0.1525957018 0.34023304 -0.071726094 0.28787441 [8,] 0.2693983 0.2794576400 0.04697126 0.012653979 -0.26792015 [9,] 0.2014353 0.0653896008 -0.37013148 -0.074557536 0.54445808 [10,] -0.1002967 -0.2761638672 -0.29389518 0.029476714 0.25539539 [11,] 0.1132090 -0.1372916959 0.21619808 0.024475573 -0.06074932 [12,] -0.1116108 -0.2696398425 -0.14592886 0.016287234 -0.12617869 [13,] 0.1792535 0.0064357827 -0.04948750 -0.008870809 -0.24736773 [14,] -0.1167216 -0.2662346206 -0.20209364 0.023588696 -0.00923419 [15,] -0.4258838 0.4700591049 0.08836730 -0.037634205 -0.24586894 [16,] 0.1047271 -0.1523001267 -0.21491954 -0.022507896 0.02225837 [17,] -0.1985753 -0.1728455549 0.32036901 -0.063617358 0.22084868 [18,] 0.1844006 0.0196368680 0.32321195 0.059600465 0.23017961 [19,] 0.1009775 -0.1586846110 -0.08282554 -0.008363512 -0.21685556 [20,] 0.1753745 -0.0033219134 0.09871464 0.017312033 -0.23746062 attr(,"degree") [1] 1 2 1 2 2 attr(,"coefs") attr(,"coefs")[[1]] attr(,"coefs")[[1]]$alpha [1] 0.5477073 0.4154115 attr(,"coefs")[[1]]$norm2 [1] 1.00000000 20.00000000 1.55009761 0.08065872 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 Thu, Jul 13, 2017 at 11:17 AM, Marc Schwartz <marc_schwa...@me.com> wrote: > Bert, > > The 'degree' argument follows the "..." argument in the function declaration: > > poly(x, ..., degree = 1, coefs = NULL, raw = FALSE, simple = FALSE) > > Generally, any arguments after the "..." must be explicitly named, but as per > the Details section of ?poly: > > "Although formally degree should be named (as it follows ...), an unnamed > second argument of length 1 will be interpreted as the degree, such that > poly(x, 3) can be used in formulas." > > The issue of having to explicitly name arguments that follow the three dots > has come up over the years, but I cannot recall where that is documented in > the manuals. > > Regards, > > Marc > > > >> On Jul 13, 2017, at 12:43 PM, Bert Gunter <bgunter.4...@gmail.com> wrote: >> >> poly(NIR, degree = 2) will work if NIR is a matrix, not a data.frame. >> The degree argument apparently *must* be explicitly named if NIR is >> not a numeric vector. AFAICS, this is unclear or unstated in ?poly. >> >> >> -- 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 Thu, Jul 13, 2017 at 10:15 AM, David Winsemius >> <dwinsem...@comcast.net> wrote: >>> >>>> On Jul 12, 2017, at 6:58 PM, Ng, Kelvin Sai-cheong <ks...@connect.hku.hk> >>>> wrote: >>>> >>>> Dear all, >>>> >>>> I am using the pls package of R to perform partial least square on a set of >>>> multivariate data. Instead of fitting a linear model, I want to fit my >>>> data with a quadratic function with interaction terms. But I am not sure >>>> how. I will use an example to illustrate my problem: >>>> >>>> Following the example in the PLS manual: >>>> ## Read data >>>> data(gasoline) >>>> gasTrain <- gasoline[1:50,] >>>> ## Perform PLS >>>> gas1 <- plsr(octane ~ NIR, ncomp = 10, data = gasTrain, validation = "LOO") >>>> >>>> where octane ~ NIR is the model that this example is fitting with. >>>> >>>> NIR is a collective of variables, i.e. NIR spectra consists of 401 diffuse >>>> reflectance measurements from 900 to 1700 nm. >>>> >>>> Instead of fitting with predict.octane[i] = a[0] * NIR[0,i] + a[1] * >>>> NIR[1,i] + ... >>>> I want to fit the data with: >>>> predict.octane[i] = a[0] * NIR[0,i] + a[1] * NIR[1,i] + ... + >>>> b[0]*NIR[0,i]*NIR[0,i] + b[1] * NIR[0,i]*NIR[1,i] + ... >>>> >>>> i.e. quadratic with interaction terms. >>>> >>>> But I don't know how to formulate this. >>> >>> I did not see any terms in the model that I would have called interaction >>> terms. I'm seeing a desire for a polynomial function in NIR. For that >>> purpose, one might see if you get satisfactory results with: >>> >>> gas1 <- plsr(octane ~NIR + I(NIR^2), ncomp = 10, data = gasTrain, >>> validation = "LOO") >>> gas1 >>> >>> I first tried using poly(NIR, 2) on the RHS and it threw an error, which >>> raises concerns in my mind that this may not be a proper model. I have no >>> experience with the use of plsr or its underlying theory, so the fact that >>> this is not throwing an error is no guarantee of validity. Using this >>> construction in ordinary least squares regression has dangers with >>> inferential statistics because of the correlation of the linear and squared >>> terms as well as likely violation of homoscedasticity. >>> >>> -- >>> David. >>> >>> >>>> >>>> May I have some help please? >>>> >>>> Thanks, >>>> >>>> Kelvin >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> ______________________________________________ >>>> R-help@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 >>> >>> ______________________________________________ >>> R-help@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. >> >> ______________________________________________ >> R-help@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. > ______________________________________________ R-help@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.