我刚接触系统发育分析,我正在使用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
谢谢你的帮助!
发布于 2018-05-12 20:18:36
正如我在评论中所说的,Emmanuel Paradis的书“与R的系统发生和进化分析”第二版(2012)中的第6.1.10章“种内变异”就是关于这个问题的信息。本章讨论了几种方法。这是一个,基于Felsenstein (2008),它将每个物种的单个个体系统发育对比方法扩展到多个个体。
每个物种对pic的单个调用是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
https://stackoverflow.com/questions/50305026
复制相似问题