decomposition {hyperSpec} | R Documentation |
Decomposition of the spectra matrix is a common procedure in
chemometrix data analysis. decomposition
converts the result
matrices into new
hyperSpec
objects.
decomposition(object, x, wavelength = seq_len (ncol (x)), label.wavelength, label.spc, scores = TRUE, retain.columns = FALSE,short = "", ...)
object |
A hyperSpec object. |
x |
matrix with the new content for object@data$spc .
May correspond to rows (like a scores matrix) or columns (like a loadings matrix) of object . |
wavelength |
for a scores-like x : the new
object@wavelength . |
label.wavelength |
The new label for the wavelength axis (if
x is scores-like) |
label.spc |
The new label for the spectra matrix |
scores |
is x a scores-like matrix? |
retain.columns |
for loading-like decompostition (i.e. x
holds loadings, pure component spectra or the like), the data columns
need special attention.
Columns with different values across the rows will be set to NA if retain.columns is TRUE , otherwise they
will be deleted.
|
short, ... |
handed over to logentry |
Multivariate data are frequently decomposed by methods like principal component analysis, partial least squares, linear discriminant analysis, and the like. These methods yield loadings (or latent variables, components, ...) that are linear combination coefficients along the wavelength axis and scores for each spectrum and loading.
The loadings matrix gives a coordinate transformation, and the scores are values in that new coordinate system.
The obtained loadings are spectra-like objects: a loading has a
coefficient for each wavelength. If such a matrix (with the same
number of columns as object
has wavelengths) is given to
decomposition
, the spectra matrix is replaced by
x
. Moreover, all columns of object@data
that did not
contain the same value for all spectra are set to NA
.
Thus, for the resulting hyperSpec
object, plotspc
and related functions are meaningful. plotmap
cannot be applied as the loadings are not laterally resolved.
The scores-matrix needs to have the same number of rows as
object
has spectra. If such a matrix is given, the spectra
matrix is replaced by x
and object@wavelength
is
replaced by wavelength
. The information related to each of the
spectra is retained. For such a hyperSpec
object,
plotmap
and plotc
and the like can be
applied. Of couse, it is also possible to use the spectra plotting,
but the interpretation is not that of the spectrum any longer.
A hyperSpec
object, updated according to x
C. Beleites
See %*%
for matrix multiplication of hyperSpec
objects.
See e.g. prcomp
and princomp
for
principal component analysis, and package pls
for Partial Least
Squares Regression.
pca <- prcomp (~ spc, data = flu$., center = FALSE) scores <- decomposition (flu, pca$x, label.wavelength = "PC", label.spc = "score / a.u.") loadings <- decomposition (flu, t(pca$rotation), scores = FALSE, label.spc = "loading I / a.u.") plotspc (loadings, stacked = TRUE, col = matlab.palette(6)) plotc (scores[,,1], plot.args = list(ylim = range(scores[[]]))) for (i in 2 : nwl (scores)) plotc (scores[,,i], add = TRUE, plot.args = list (col = matlab.palette(6)[i])) pca$sdev ## everything besides the first component is just noise ## Reconstructing the data using only the first PC results in a noise ## filtered data set. flu.filtered <- scores[,,1] ## example 2 pca <- prcomp (~ spc, data = chondro$., tol = 0.1) scores <- decomposition (chondro, pca$x, label.wavelength = "PC", label.spc = "score / a.u.") plotmap (scores[,,1])