如何在我的系统发育树的每个尖端分析我有多个人数据的特征?

时间:2018-05-12 10:03:23

标签: r phylogeny ape-phylo

我是系统发育分析的新手,我使用ape库来分析来自28个不同物种的34种灵长类动物的神经解剖学特征。我用10ktree来获得一致的系统发育树(有28个提示)。但是,我无法将表型和树结合起来,因为观察的数量与提示的数量不匹配。我应该使用切除术将尖端分成多个受试者吗?

到目前为止,这是我的代码:

tree <- read.nexus("10ktree.nex")
pheno <- read.csv("pheno.csv")
BrainVolume <- pheno$BrainVolume
names(BrainVolume) <- pheno$GenBank.Name
pic.BrainVolume <- pic(BrainVolume, tree)

我收到以下错误:

Error in pic(BrainVolume, tree) : 
  length of phenotypic and of phylogenetic data do not match

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,Emmanuel Paradis的书“用R分析系统发育和进化”第二章(2012)中的第6.1.10章“种内变异”在这个问题上有确切的信息。本章讨论了几种方法。这是一个基于Felsenstein(2008)的研究,它将每个物种的单个个体系统发育对比方法扩展到多个个体。

每种物种的单个人呼叫是pic.BrainVolume <- pic(BrainVolume, tree),其中BrainVolume是一个向量。对于多个体的方法,BrainVolume必须是一个列表,其中一些条目可以具有表示同一物种的多个个体的值的向量。我使用

创建了原始pheno文件的“分组”版本
grouped<-split(pheno,pheno$GenBank.Name)

接下来,lapply列出BrainVolume表型列表:

BrainVolume<-lapply(grouped,"[[","BrainVolume")

最后,使用实现Felsenstein方法的pic.ortho函数:

pic.SA<-pic.ortho(SA,tree,intra=TRUE)

结果对比可以与原始pic命令一起使用。

<强>参考

Felsenstein J(2008)“具有抽样误差和种内变异的比较方法:对比重访和修订”美国自然主义者171:713--725