This is another way to pre-treat aspectra set with the SNV math-treatment

(Standard Normal Variate). You can see the other one in the post :

In this post, I use the R function **“sweep**“.

**library(ChemometricsWithR)**

**#in a first step I calculate the average value**

**#of all the data points for every spectrum and**

**#subtract it to every data point of the **

**#spectrum using the function “colMeans” **

**#from the package “ChemometricsWhithR”**

**#the mean value for every spectrum is now cero.**

**NIR.1<-sweep(gasoline$NIR,MARGIN=1,**

**+colMeans(t(gasoline$NIR)),FUN=”-“)**

#sd function calculates the SD for all the data

#points of every #spectrum.

#We divide now the value of every data point

#by the SD of all the values of that spectrum.

**NIR.2<-sweep(NIR.1,MARGIN=1,**

**+sd(t(gasoline$NIR)),FUN=”/”)**

**#Now the spectrum has a mean of cero and a SD of 1.**

**#Use matplot to plot the spectra.**

**matplot(wavelengths,t(NIR.2),type=”l”,lty=1,**

**+xlab=”nm”,ylab=”log 1/R”,**

**+main=”SNV Gasoline Spectra”,col=”blue”)**

We have to take consider that in the Gasoline matrix, the rows are the

samples and the columns the wavelengths, so we have to transpose the matrix

for some calculations.

Gasoline is a data set included in the “pls” package. Is not a set to see the benefits

of the SNV math treatment (not enough scatter), but you can try

with other data sets as “yarn”.

*Related*

To

**leave a comment** for the author, please follow the link and comment on their blog:

** NIR-Quimiometria**.

R-bloggers.com offers

**daily e-mail updates** about

R news and

tutorials on topics such as:

Data science,

Big Data, R jobs, visualization (

ggplot2,

Boxplots,

maps,

animation), programming (

RStudio,

Sweave,

LaTeX,

SQL,

Eclipse,

git,

hadoop,

Web Scraping) statistics (

regression,

PCA,

time series,

trading) and more...

If you got this far, why not

__subscribe for updates__ from the site? Choose your flavor:

e-mail,

twitter,

RSS, or

facebook...