I want to calculate the phylogenetic signal of the categorical traits, while I think the K statistic could most suitable for the continuous traits. Can anyone offer me some suggestions. Thank you!
The PVR is an interesting and very intuitive method that I think you can use. In the PVR method, a principal coordinate analysis (PCoA) is performed on the phylogenetic distance matrix to reduce the topological complexity into axes that still represent the phylogenetic relationships between species. These axes can be used as explanatory variables on which the traits of interest are regressed. The coefficients of determination for these regressions (R2) are estimates of the amount of phylogenetic signal in the traits, so high R2 indicates that phylogenetically similar species tend to be more similar for each trait. Since you have a categorical trait, I am quite sure you could use glm model with poisson distribution to infer the R2 and calculate the phylogenetic signal.
Here some interesting publicaitions:
Diniz-Filho J.A.F., Sant’Ana C.E.R., Bini L.M. (1998) An eigenvector method for estimating phylogenetic inertia. Evolution, 52, 1247–1262.
Diniz-Filho J.A.F., Rangel T.F., Santos T., Bini L.M. (2011) Exploring patterns of interspecific variation in quantitative traits using squential phylogenetic eingenvector regressions. Evolution, 66, 1079–1090.
Diniz-Filho J.A.F., Bini L.M., Rangel T.F., Morales- Castilla I., Olalla-Tarraga M.A., Rodrıguez M.A., Hawkins B.A. (2012) On the selection of phylogenetic eigenvectors for ecological analyses. Ecography, 35, 239.
You could use a randomization test for evaluate the phylogenetic signal in categorical traits.
Literally I used of this way= "For analyzing PS (i.e., how lineages resemble each other in trait values) in the discrete trait (fermentation versatil- ity), we used the phylo.signal.disc procedure (E. Rezende, pers.comm., available script on request). This algorithm estimates the minimum number of character-state transi- tions at each node that account for the observed distribu- tion the character in the phylogeny (assuming maximum parsimony; Maddison and Maddison 2000). Then, it is compared with the median of a randomized distribution (1000 randomizations were used). If the observed transi- tion rates are significantly less than the randomized med- ian, a significant PS is inferred." Paleo‐López et al., (2016). A phylogenetic analysis of macroevolutionary patterns in fermentative yeasts. Ecology and Evolution.
Dear Vinícius, Gregoire, Alejandro, Xingfeng and Jaiber
Many thanks for the provided literatures and R functions (e.g. phylo.signal.disc) as well as your kind answer that are so useful and does help me to solve this problem.
I have the same question and none of the answers provided here brought me a solution :( (I really appreciated the literature suggestions though!).
Xu Wumei was talking about categorical traits and the suggestions provided concern either continuous (PVR, Pagel's lambda, Blomberg's K) or discrete (phylo.signal.disc) traits.
Xu Wumei, did you find a solution to your problem at the end?
Is there a method out there to determine the phylogenetic signal of categorical traits ?
Oh but does the procedure phylo.signal.disc (from E. Rezende, who does not answer my emails...) would work if I replace the name of each category by a number?? Which means that the method does not rank the different discrete values?
I think "phylo.signal.disc" can resolve the question but you can also try the other ways provided above. You may also ask Zulqarnain ([email protected]) for more details.
Best,
Wumei
Article Selectivity in Mammalian Extinction Risk and Threat Types: a...
Article Does phylogeny have a role in the liana-phorophyte interacti...
You can used Pagel’s lambda using the "fitDiscrete()" function in the R package geiger . Pagel’s lambda is a multiplier of the off-diagonal elements of a variance–covariance matrix, which best fits the distribution of data at the tips of the phylogeny. Values vary between 0 (phylogenetic independence) and 1 (traits evolve according to a Brownian process).
Hi all, just adding some extra info to the discussion.
For binary traits you can use the phylo.d function in caper which: "Calculates the D value, a measure of phylogenetic signal in a binary trait, and tests the estimated D value for significant departure from both random association and the clumping expected under a Brownian evolution threshold model"
You can find more about it in Fritz & Purvis paper:
Article Selectivity in Mammalian Extinction Risk and Threat Types: a...
Hi, everyone. There is a newly developed method, which suitable to assess the phylogenetic signal of categorical traits.
Rui Borges, João Paulo Machado, Cidália Gomes, Ana Paula Rocha, Agostinho Antunes, Measuring phylogenetic signal between categorical traits and phylogenies, Bioinformatics, , bty800, https://doi.org/10.1093/bioinformatics/bty800
I suspect the code has issues. Specifically, it seems to me that 'x' (node entropies) is not actually defined in the code. Also, at the end when you calculate delta, one of the parameters is 'deltaA', which is one of the 'deltas' you are supposed to calculate in the example, so you end up re-defining one of the parameters that you are supposed to include in the calculation. Am I missing something?
Jennifer C. Girón Duque can you please tell what are the issue you have found so I can improve the code? The code.R function does calculate the node entropies; actually, it is the very first function described. nentropy returns the node entropies by calculating sum of the state entropies and it requires a prob matrix of state probabilities.