[R] How to formulate quadratic function with interaction terms for the PLS fitting model?

Luigi Biagini luigi.biagini at gmail.com
Thu Jul 13 12:07:27 CEST 2017


I have two ideas about it.

1-
i) Entering variables in quadratic form is done with the command I
(variable ^ 2) -
plsr (octane ~ NIR + I (nir ^ 2), ncomp = 10, data = gasTrain, validation =
"LOO"
You could also use a new variable NIR_sq <- (NIR) ^ 2

ii) To insert a square variable, use syntax I (x ^ 2) - it is very
important to insert I before the parentheses.

iii) If you want to make the interaction between x and x ^ 2 use the
command ":" -> x: I(x ^ 2)

iv) For multiple interactions between x and x ^ 2 use the command "*" -> x
*I (x ^ 2)

i) plsr (octane ~ NIR + NIR_sq, ncomp = 10, data = gasTrain, validation =
"LOO") I (x ^ 2)
ii)p lsr (octane ~ NIR + I(NIR^2), ncomp = 10, data = gasTrain, validation
= "LOO") I (x ^ 2)
iii)p lsr (octane ~ NIR : I(NIR^2), ncomp = 10, data = gasTrain, validation
= "LOO") I (x ^ 2)
iv)p lsr (octane ~ NIR * I(NIR^2), ncomp = 10, data = gasTrain, validation
= "LOO") I (x ^ 2)

2 - For your regression, did you plan to use MARS instead of PLS?




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 octane[i] = a[0] * NIR[0,i] + a[1] * NIR[1,i] + ...
> I want to fit the data with:
> 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.
> May I have some help please?
> Thanks,
> Kelvin

	[[alternative HTML version deleted]]



More information about the R-help mailing list