[R-sig-phylo] How to detect phylogenetic signal (lambda) in one unscaled trait?

tgarland at ucr.edu tgarland at ucr.edu
Tue Mar 22 20:36:15 CET 2011

Hi Alberto,

	I'll jump in here.  Aside from anything you would do with Pagel's lambda, Grafen's rho, or an OU or ACDC transform, it is useful to have a value for the K statistic, as presented here:

Blomberg, S. P., T. Garland, Jr., and A. R. Ives. 2003. Testing for phylogenetic signal in comparative data: behavioral traits are more labile. Evolution 57:717-745.

In that paper (see pages 720-721), we surveyed a lot of traits on a lot of trees, and so you can compare your K values with what we show.  For the traits that were obviously correlated with body mass (e.g., leg length, brain mass, metabolic rate), we first computed size-corrected values in the following way.

1.  log-transform the trait and body mass.

2.  Use a phylogenetic regression method (e.g. independent contrasts, PGLS, maybe a regression with a transform) to obtain the allometric equation.

3.  Divide the trait by body mass raised to the allometric scaling exponent (i.e., the slope from #2), then take the log of that quantity.

4.  Compute the K statistic.


  ---- Original message ----

    Date: Tue, 22 Mar 2011 20:37:58 +0200
    From: Alberto Gallano <alberto.gc8 at gmail.com>
    Subject: [R-sig-phylo] How to detect phylogenetic signal (lambda) in
    one unscaled trait?
    To: r-sig-phylo at r-project.org

    >This is a repost of an earlier question, after my colleague helped
    me with
    >my English:
    >To calculate signal in PGLS multiple regression (with say two
    >variables) I can use the following model:
    >lambdaModel <- gls(Y ~ X + bodymass, correlation=corPagel(1, tree),
    >This will take account of body mass when assessing the strength of
    >relationship between Y and X. This calculates lambda for the
    residuals and
    >is better than calculating lambda for each trait (according to
    >2010). My question is, If I only want to find phylogenetic signal
    in one
    >(unscaled) variable, should I use the model:
    >lambdaModel <- gls(Y ~ bodymass, correlation=corPagel(1, tree),
    >Will this give the lambda value for Y after controlling for body
    mass? Or,
    >would it be better to 'correct' for body mass first, using a ratio
    (Y /
    >body mass), and then calculate lambda for this scaled trait, using
    >lambdaModel <- fitContinuous(tree, scaled_Y, model="lambda")
    >kind regards,
    > [[alternative HTML version deleted]]
    >R-sig-phylo mailing list
    >R-sig-phylo at r-project.org

More information about the R-sig-phylo mailing list