20 mar. 2017

Tutorials with Resemble (part 1)

I see that some of you are interested in the package "Resemble", so I´m going to re-writte some of the post with this package, so we can understand better the LOCAL concept we have been treating with Win ISI.

The examples use the NIRsoil data that we can get from the package "prospectr".
require(prospectr)data(NIRsoil)
If we can plot the  raw spectra, ..., just writte this script
wavelength<-seq(1100,2498,by=2)
matplot(wavelength,t(NIRsoil\$spc),type="l",col="blue",
xlab="Wavelength(nm)",ylab="Absorbance",ylim=c(0,1))

In the Resemble manual recomends to apply a SG filter without derivatives to smooth the spectra, so in this case we proceed as the manual:
sg <- savitzkyGolay(NIRsoil\$spc, p = 3, w = 11, m = 0)
NIRsoil\$spc <- sg
Now the spectra is truncated in both sides, so we have to create:
wavelength_sg<-seq(1110,2488,by=2)
and we can plot the spectra filtered:
matplot(wavelength_sg,t(NIRsoil\$spc ),type="l",col="black",
xlab="Wavelength(nm)",ylab="Absorbance",ylim=c(0,1))

You won´t see too much difference with the raw spectra.

Now we split the data into a training (Xr , Yr) set and a validation set (Xu, Yu)
#VALIDATION
Xu <- NIRsoil\$spc[!as.logical(NIRsoil\$train),]
Yu <- NIRsoil\$CEC[!as.logical(NIRsoil\$train)]

#TRAINING
Xr <- NIRsoil\$spc[as.logical(NIRsoil\$train),]

Yr <- NIRsoil\$CEC[as.logical(NIRsoil\$train)]
and we take out the data without reference values form both sets:
Xu <- Xu[!is.na(Yu),]
Xr <- Xr[!is.na(Yr),]
Yu <- Yu[!is.na(Yu)]
Yr <- Yr[!is.na(Yr)]

Practise making plots again of the spectra of the diferent sets. Overlap training and validation sets with different colors,....., and enjoy using R for chemometrics.