----- Forwarded message from "Collyer, Michael"
<michael.coll...@wku.edu> -----
Date: Sat, 27 Apr 2013
10:04:59 -0400
From: "Collyer, Michael"
<michael.coll...@wku.edu>
Reply-To: "Collyer, Michael"
<michael.coll...@wku.edu>
Subject: Re: 2B-PLS vs PLSR
To: "morphmet@morphometrics.org"
<morphmet@morphometrics.org>
Just an addendum to Dean's suggestion, in case one
would rather work with correlation matrices instead of covariance matrices (plus
a bit of a warning).
One could use R.XY (the
corss-correlation matrix) instead of S.XY, decompose R.XY via SVD, project the
data onto singular vectors, and find their correlation. This might be a wise
decision if one of the matrices has variables on vastly different scales. R.XY
can be found in R by
R.XY <- cor(cbind(X,
Y))
Using 'plsr' (as Dean showed), one must first
standardize the matrices. This can be done by
X <-
scale(X, scale = T)*sqrt(n)/sqrt(n-1)
Y <- scale(Y, scale =
T)*sqrt(n)/sqrt(n-1)
Note that the sqrt(n)/sqrt(n-1),
where n is the number of subjects (rows) in X and Y, is essential to produce
consistent results with the "by hand" approach. R uses a sample standard
deviation (not a population standard deviation) in its scale function. This
correction assures that e.g., 1/n*t(X)%*%X = cor(X), after X has been
standardized.
However, if one uses a resampling
approach to generate P-values for the correlation between PLS scores, the
standard deviation correction is somewhat arbitrary, since it would be a
constant in every permutation.
Cheers!
-Mike
Michael Collyer
Assistant Professor
Department of Biology
Western Kentucky University
1906 College Heights Blvd. #11080
Bowling Green, KY 42101-1080
Phone: 270-745-8765; Fax: 270-745-6856
Email: michael.coll...@wku.edu
Assistant Professor
Department of Biology
Western Kentucky University
1906 College Heights Blvd. #11080
Bowling Green, KY 42101-1080
Phone: 270-745-8765; Fax: 270-745-6856
Email: michael.coll...@wku.edu
On Apr 27, 2013, at 2:05 AM, <morphmet_modera...@morphometrics.org> wrote:
----- Forwarded message from Dean Adams <dcad...@iastate.edu> -----
Date: Fri, 26 Apr 2013 10:20:35 -0400
From: Dean Adams <dcad...@iastate.edu>
Reply-To: Dean Adams <dcad...@iastate.edu>
Subject: Re: 2B-PLS vs PLSR
To: morphmet@morphometrics.orgRodrigo,
The two methods are identical; plsr() is just an implementation of two-block partial least squares. To obtain the PLS correlation between primary PLS vectors in plsr(), do:
pls.res<- plsr(Y ~ X)
cor(pls.res$scores[,1],pls.res$Yscores[,1])
The same result could also be found 'by hand' following the steps in Rohlf and Corti 2000: obtain the cross-covariance matrix S.XY, decompose it via SVD, project the data onto the vectors, and find their correlation.
Dean-- Dr. Dean C. Adams Professor Department of Ecology, Evolution, and Organismal Biology Department of Statistics Iowa State University Ames, Iowa 50011 www.public.iastate.edu/~dcadams/ phone: 515-294-3834
----- Forwarded message from Rodrigo Lima <rodrigo.l...@mail.mcgill.ca> -----
Date: Wed, 24 Apr 2013 09:57:46 -0400
From: Rodrigo Lima <rodrigo.l...@mail.mcgill.ca>
Reply-To: Rodrigo Lima <rodrigo.l...@mail.mcgill.ca>
Subject: 2B-PLS vs PLSR
To: "morphmet@morphometrics.org" <morphmet@morphometrics.org>Dear morphometricians,
I have a question about the PLS analysis and I would be very thankful for any insight provided.
What is the difference between two-block PLS (as in Rohf and Corti 2000) and PLS regression (PLSR) implemented in the pls package in R (Mevik and Wehrens 2007)? I'm trying to relate skull shape to climatic variables, which one would be more appropriate in this case?
Thank you,
Rodrigo
----- End forwarded message -----
----- End forwarded message -----
----- End forwarded message -----