# \donttest{
library(prospectr)
data(NIRsoil)
# Preprocess
sg_det <- savitzkyGolay(
detrend(NIRsoil$spc, wav = as.numeric(colnames(NIRsoil$spc))),
m = 1, p = 1, w = 7
)
# Split data
train_x <- sg_det[NIRsoil$train == 1 & !is.na(NIRsoil$CEC), ]
train_y <- NIRsoil$CEC[NIRsoil$train == 1 & !is.na(NIRsoil$CEC)]
test_x <- sg_det[NIRsoil$train == 0 & !is.na(NIRsoil$CEC), ]
# PCA with fixed components
proj <- ortho_projection(train_x, ncomp = 5)
plot(proj)
# PCA with variance-based selection
proj <- ortho_projection(train_x, ncomp = ncomp_by_var(0.01))
# PCA with OPC optimization
proj <- ortho_projection(train_x, Xu = test_x, Yr = train_y,
ncomp = ncomp_by_opc(40))
#' plot(proj)
# PLS projection (NIPALS)
proj <- ortho_projection(train_x, Xu = test_x, Yr = train_y,
method = "pls", ncomp = ncomp_by_opc(40))
# Modified PLS
proj <- ortho_projection(train_x, Yr = train_y,
method = "mpls", ncomp = 10)
# SIMPLS (faster for wide matrices)
proj <- ortho_projection(train_x, Yr = train_y,
method = "simpls", ncomp = 10)
# }
Run the code above in your browser using DataLab