本项目是对发表在《ecology》上的文章「Phylogenetic conservatism explains why plants are more likely to produce fleshy fruits in the tropics」的结果的复现。
本文的问题主要是探讨植物的果实类型(干果或者鲜果)是什么因素决定的,或者说是各个都可能的因子的相对的贡献。目前有着多种因子可能对其影响,例如温度、气候、生活型等,但鲜有研究考虑系统发育在其中的贡献。
这里面有三个包在默认的CRAN中并没有,需要从GitHub上安装:
devtools::install_github("arives/rr2")
devtools::install_github("daijiang/phyr")
devtools::install_github("lamho86/phylolm")
- 根目录是主要的代码;
data
目录是来源数据,本项目中使用的数据与原始数据略微不同,体现在原始数据中已经进行了名义数据的One-Hot编码,而本项目没有;result
目录下是生成的结果,以及部分中间文件。
这篇文章首先对这9370种云南的植物物种进行了一个描述性的统计分析,包括果实类型在各个因子中的分布情况。并对各个因子之间的相关性进行了分析。
这些分析请参考summary_analysis.R
脚本。
第二块内容则是进行系统发育分析,系统发育分析依赖于系统树的构建。 在维管植物中,有一个非常方便的包V.PhyloMaker2
,涵盖了绝大多数已知的维管植物,可以直接构建带有时间年份的系统树,我们用它构建自己的数据子集即可,该包的使用方法参见https://github.com/jinyizju/V.PhyloMaker2。
原文中的附件直接附带了系统发育树的文件,但是我重新构建后的树和原本地树有非常大的差异,猜测是由于版本更新带来的影响,推荐还是使用原文附件中现成的系统树文件。
直接生成的系统树在可视化上并不美观,还需要结合性状等数据进行映射。
系统树的解释主要有两种方式,一种是直接看系统树的分支,如果分支上的物种都是同一种果实类型,那么就是保守性状,否则就是不保守,当然更直接的方式是看系统发育信号,详细方法参考phylo_analyses.R
脚本。这里面在使用phyloglm()
等函数进行分析的时候,需要把名义变量转换为0/1
数据,记得数据格式的转换。需要注意的是,原文中的
如果在进行系统发育信号计算时,遇到的性状是连续的,那么可以使用phylolm()
函数进行计算,这个函数的使用方法参考phylolm.R
脚本。
就这篇文章中讨论的果实性状而言,系统发育信号只是表面了该性状的保守性,但是还是很难说明系统发育保守性在果实类型中的贡献。因此,本文还对各个因子的贡献进行了分析,这里面使用了rr2
包,里面的R2_lik()
函数可以实现多个模型之间的减法。具体的使用方法参考r2lik.R
脚本。