EMSC {EMSC} | R Documentation |
Extended multiplicative signal correction (EMSC)
Description
Performs model-based background correction and normalisation of spectra. EMSC handles variations in scaling, polynomial baselines and interferents. Parameters for corrections are stored for further analysis, and spectra are corrected accordingly.
Usage
EMSC(X, model = NULL, ...)
Arguments
X |
|
model |
an EMSC model to use instead of the other parameters. |
... |
named model parameters for EMSC_model. |
Details
This is the main EMSC function performing all calculations. It can be run with
no parameters (defaults are used), with a predefined EMSC model object or with
parameters that are passed on to the EMSC model building function EMSC_model
.
Value
An object of class EMSC is returned. This contains:
-
corrected
:matrix
of corrected spectra. -
parameters
:matrix
of fitted parameter values. -
model
: object containing input all input parameters. -
X
: original data.
References
H. Martens, E. Stark, Extended multiplicative signal correction and spectral interference subtraction: new preprocessing methods for near infrared spectroscopy. J Pharm Biomed Anal. 1991; 9(8):625-35.
Joakim Skogholt, Kristian Hovde Liland, Ulf Geir Indahl, Pre-processing of spectral data in the extended multiplicative signal correction framework using multiple reference spectra Journal of Raman Spectroscopy 50(3), (2019), pp. 407-417.
See Also
EMSC_model
predict.EMSC
plot.EMSC
Examples
data(fishoil)
Raman <- fishoil$Raman[, 850:3300]
EMSC.basic <- EMSC(Raman)
EMSC.poly6 <- EMSC(Raman, degree = 6)
EMSC.rep <- EMSC(Raman, degree = 6, reference = Raman[30, ],
replicates = fishoil$replicates)
old.par <- par(mfrow = c(2,2), mar = c(4,4,1,1))
xlim <- rev(as.numeric(range(colnames(Raman))))
matplot(colnames(Raman), t(Raman), type = 'l', xlim = xlim,
ylab = 'Relative intensity', xlab = 'Raw spectra')
matplot(colnames(Raman), t(EMSC.basic$corrected), type = 'l', xlim = xlim,
ylab = 'Relative intensity', xlab = 'Corrected (basic)')
matplot(colnames(Raman), t(EMSC.poly6$corrected), type = 'l', xlim = xlim,
ylab = 'Relative intensity', xlab = 'Corrected (6th degree polynomial)')
matplot(colnames(Raman), t(EMSC.rep$corrected), type = 'l', xlim = xlim,
ylab = 'Relative intensity',
xlab = 'Corrected (reference = spec. #30, replicate correction (90%))')
par(old.par)