swh:1:snp:3a44eb759780145deea094ac2a25c5049546a085
Tip revision: 9120e042a4e1ace638f4af6dae1ed85da1e97d81 authored by Han Lin Shang on 24 October 2012, 06:39:13 UTC
version 3.6
version 3.6
Tip revision: 9120e04
unitsimpls.R
unitsimpls = function(Xtrain, Ytrain, Xtest = NULL, ncomp = NULL, weight = FALSE, beta)
{
pls.out <- simpls(Xtrain = Xtrain, Ytrain = Ytrain, Xtest = Xtest, ncomp, weight = weight, beta = beta)
euclidian.norm <- function(xvec) {
return(sqrt(sum(xvec * xvec)))
}
R.norm <- apply(pls.out$R, 2, euclidian.norm)
if (length(R.norm) == 1) {
M <- matrix(R.norm, 1, 1)
Mi <- matrix(1/R.norm, 1, 1)
}
else {
M <- diag(R.norm)
Mi <- diag(1/R.norm)
}
Rnew <- pls.out$R %*% Mi
Tnew <- pls.out$T %*% Mi
Qnew <- pls.out$Q %*% M
Pnew <- pls.out$P %*% M
if (!is.null(Xtest))
if (weight == TRUE){
list(B = pls.out$B, Ypred = pls.out$Ypred, P = Pnew,
Q = Qnew, T = Tnew, R = Rnew, meanX = pls.out$meanX, weight = pls.out$weight)
}
else {
list(B = pls.out$B, Ypred = pls.out$Ypred, P = Pnew,
Q = Qnew, T = Tnew, R = Rnew, meanX = pls.out$meanX)
}
else
if (weight == TRUE){
list(B = pls.out$B, P = Pnew, Q = Qnew, T = Tnew, R = Rnew,
meanX = pls.out$meanX, meanY = pls.out$meanY, weight = weight)
}
else {
list(B = pls.out$B, P = Pnew, Q = Qnew, T = Tnew, R = Rnew,
meanX = pls.out$meanX, meanY = pls.out$meanY)
}
}