假设我有一个系统发育树和我的树的一些字符数据。我知道一个字符是单向的:从 0 到 1 的转变率为正,但从 1 到 0 的转变率为零(例如,0 是二倍体,1 是多倍体)。假设我想对我的树进行祖先重建。我知道我可以使用 Ape 包中的 Ace 或 phytools 包中的 make.simmap 来进行祖先重建,但我不知道如何指定单向字符更改的模型。
例子:
require(ape)
require(phytools)
# Generate example tree
set.seed(100)
tree<-rtree(10, rooted=T, tip.label=letters[1:10])
# Example characters
characters<-sample(0:1, 10, replace=T)
names(characters)<-letters[1:10]
# Equal-rates model
mod=matrix(c(0,1,1,0),2)
simmap<-make.simmap(tree, characters, model=mod)
plotSimmap(simmap) # Works fine
# My attempt at a unidirectional model: rate of change from 1 to 0 set to zero
mod = matrix(c(0,0,1,0),2)
simmap<-make.simmap(tree, characters, model=mod) # Gives me error; Error in eigen(mat) : infinite or missing values in 'x'
有人知道该怎么做吗?