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.
No hay comentarios:
Publicar un comentario