Graham's right of course. Sorry about that.

You might do something like:

Si<-(Xi-matrix(1,nrow(Xi),1)%*%phyl.vcv(Xm,vcv(tree),
        1)$alpha[,1])%*%pca$Evec

I also agree with Joe that you can take the phylogeny into account whilst accounting for sampling error using his approach or that of Ives et al. In either case you will obtain a covariance matrix among traits the decomposition of which could be employed to compute scores for individuals in the original space as Joe suggests. I'm not sure whether or not it will make a difference. That probably depends on how much uncertainty in the values of species means has been ignored.

All the best, Liam

Liam J. Revell, Associate Professor of Biology
University of Massachusetts Boston
& Profesor Asociado, Programa de Biología
Universidad del Rosario
web: http://faculty.umb.edu/liam.revell/

On 3/12/2018 11:29 AM, Graham Slater wrote:
Hi Rafael,

You need to mean-center your traits before multiplying by the matrix of eigenvectors. Compute the vector of phylogenetic means (under BM or Pagel’s lambda), subtract each value from the relevant column of Xm and then compute Si. The result should be identical to the scores from your phylogenetic PCA.

Graham

------------------------------------------------------
Graham J. Slater
Assistant Professor
Department of the Geophysical Sciences
University of Chicago
5734 S. Ellis Avenue
Chicago, IL 60637 USA

Tel: (773) 702-0249
email: gsla...@uchicago.edu <mailto:gsla...@uchicago.edu>
www.fourdimensionalbiology.com <http://www.fourdimensionalbiology.com>






On Mar 12, 2018, at 11:11 AM, Rafael S Marcondes <raf.marcon...@gmail.com <mailto:raf.marcon...@gmail.com>> wrote:

Hi Liam,

Thank you very much for the very fast response (as usual). To try out if I was using your approach correctly, I ran it with the species-level data, expecting that I would get the same PC scores as from phyl.PCA. That didn't happen though. Am I understanding/doing something wrong?

pca<-phyl.pca(tree,Xm)
Si<-Xm%*%pca$Evec
Expected that Si would be identical to pca$S. But they aren't.

I have attached my species-level data, individual-level data, and output of phyl.pca

Thank you,


*--
*
*Rafael Sobral Marcondes*
PhD Candidate (Systematics, Ecology and Evolution/Ornithology)

Museum of Natural Science <http://sites01.lsu.edu/wp/mns/>
Louisiana State University
119 Foster Hall
Baton Rouge, LA 70803, USA

Twitter: @brown_birds <https://twitter.com/brown_birds>



On Sun, Mar 11, 2018 at 5:16 PM Liam J. Revell <liam.rev...@umb.edu <mailto:liam.rev...@umb.edu>> wrote:

    Hi Rafael.

    So far as I know, there is currently no way to explicitly take into
    account sampling error in computing principal components while also
    accounting for the phylogeny. However, it is relatively
    straightforward
    to compute scores for individuals from a PCA conducted on species
    means.

    This would look as follows (in which Xm is a matrix containing values
    for species for each trait, and Xi is a matrix with the same number of
    columns but containing values for individuals):

    pca<-phyl.pca(tree,Xm)
    Si<-Xi%*%pca$Evec

    Then, if you have a separate vector containing species ID as a factor,
    you could compute means and variances for each component by species.

    I hope this is some help. All the best, Liam

    Liam J. Revell, Associate Professor of Biology
    University of Massachusetts Boston
    & Profesor Asociado, Programa de Biología
    Universidad del Rosario
    web: http://faculty.umb.edu/liam.revell/

    On 3/11/2018 5:06 PM, Rafael S Marcondes wrote:
    > Dear all,
    >
    > Does anyone have any advice on how to calculate measurement
    error in an
    > analysis using phylogenetic principal components? Or, in other
    words, after
    > I run a phylogenetic PCA on species-level data, how can I
    "project" my
    > individual-level data into the phylogenetic PCs so I can calculate a
    > standard error? I'm running my pPCA using the lambda method and the
    > covariance matrix.
    >
    > I would think this would be an usual, simple procedure, and that
    there
    > would be an R function for it, but I can't for the life of me find
    > anything. The recent paper by Jonathan Drury et al linked below does
    > mention doing it, but without going into any detail.
    >
    >
    http://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.2003563
    >
    > Thank you very much for any help,
    >
    >
    > *--*
    > *Rafael Sobral Marcondes*
    > PhD Candidate (Systematics, Ecology and Evolution/Ornithology)
    >
    > Museum of Natural Science <http://sites01.lsu.edu/wp/mns/>
    > Louisiana State University
    > 119 Foster Hall
    > Baton Rouge, LA 70803, USA
    >
    > Twitter: @brown_birds <https://twitter.com/brown_birds>
    >
    >       [[alternative HTML version deleted]]
    >
    > _______________________________________________
    > R-sig-phylo mailing list - R-sig-phylo@r-project.org
    <mailto:R-sig-phylo@r-project.org>
    > https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
    > Searchable archive at
    http://www.mail-archive.com/r-sig-phylo@r-project.org/
    >

<indivdata.RDS><spleveldata.RDS><pPCAresults.rds>_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org <mailto:R-sig-phylo@r-project.org>
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/


_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/

Reply via email to