Standard Normal Variate (SNV: Other way)
[This article was first published on NIR-Quimiometria, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
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.
#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”)
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”.
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 about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.