MCMCglmm问题:多种树种和超树

时间:2018-07-31 08:10:09

标签: mixed-models phylogeny

这些问题与我在Phylogenetic model using multiple entries for each species遇到的其他问题有关 感谢@thomas-guillerme,我得以开始运行MCMCglmm模型。

尽管我运行某些示例文件没有问题,在这些示例文件中我的树中每个物种都有一个条目,但是在尝试运行原始数据集时却发现了一条错误消息,其中包含数千个条目我树上的每个物种。运行时:

comp_data <- comparative.data(phy = my_tree, data =my_data, names.col = species, vcv = TRUE)’  

我收到一个错误:

  

'row.names <-。data.frame(tmp,value = value)中的错误:重复   不允许使用“ row.names”另外:警告消息:不唯一   设置“ row.names”时的值:“ Species1”,“ Species2”,   ‘Species3’,‘Species4’,...

我很惊讶,因为我使用的是MCMCglmm而不是PGLS,因为每个物种都有可能使用多个条目。

我尝试了使物种名称唯一的解决方法,但是在这种情况下,模型的后面仅会识别每个物种的第一个条目(因为它与my_tree中的名称相对应)。

此外,我的树被识别为超度树时遇到了问题。我用

检查过
'is.ultrametric(my_tree)'

知道:

  

我尝试过:

    function (phy) { if(any(is.ultrametric(my_tree)) == FALSE) { my_tree <- lapply(my_tree, chronoMPL) class(my_tree) <- "Phylo" 
 }
}

但是这些行显然不能解决问题。预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

很难说出没有正在运行的示例,但至少对于第二个问题,似乎该错误来自<div class="aviso">Text content of the warning</div> 参数,根本没有传递给该函数(它正在使用.aviso{ background-image: path/to/image.jpg; background-position-x: 2%; background-position-y: 30%; padding: 8px 15px 8px 35px; }

phy

关于第一点,您可能想尝试通过mulTree package运行它来做大量的内部管理:

my_tree

然后我们可以生成一个示例,每个物种有多个标本:

check.fun <- function(my_tree) {
    if(any(is.ultrametric(my_tree)) == FALSE) {
         my_tree <- lapply(my_tree, chronoMPL)
         class(my_tree) <- "Phylo" 
    }
    return(my_tree)
}

请注意,第一列包含每个物种具有多个标本的物种列表(在列## Loading/installing the package library(devtools) install_github("TGuillerme/mulTree") library(mulTree) ## Loading the example data data(lifespan) ## Randomly combining trees combined_trees <- tree.bind(x = trees_mammalia, y = trees_aves, sample = 2, root.age = 250) 中指定)

## Subset of the data
data <- lifespan_volant[sample(nrow(lifespan_volant), 30),]
## Create a dataset with two specimen per species
data <- rbind(cbind(data, specimen = rep("spec1", 30)), cbind(data,
             specimen = rep("spec2", 30)))

然后您可以使用$specimen函数来确保树木与数据集匹配(指定哪一列包含物种名称)

head(data[order(data$species),])
#                 species    class longevity      mass    volant specimen
#16   Addax_nasomaculatus Mammalia 0.8413927 1.8227058 nonvolant    spec1
#161  Addax_nasomaculatus Mammalia 0.8413927 1.8227058 nonvolant    spec2
#140          Anser_anser     Aves 0.9929849 0.5993055    volant    spec1
#1401         Anser_anser     Aves 0.9929849 0.5993055    volant    spec2
#21   Antilope_cervicapra Mammalia 0.6055864 1.4910746 nonvolant    spec1
#211  Antilope_cervicapra Mammalia 0.6055864 1.4910746 nonvolant    spec2

您可以在clean.data## Making sure both the trees and the data match cleaned_data <- clean.data(data, combined_trees, data.col = "species") ## Only using the cleaned version trees <- cleaned_data$tree data <- cleaned_data$data 中找到最终丢弃的提示/行:

cleaned_data$dropped_tips

要分析生成的文件,可以使用cleaned_data$dropped_rows和后续功能(请参见## Creates a mulTree object specifying species AND specimens as random terms mulTree_data <- as.mulTree(data, trees, taxa = "species", rand.terms = ~species+specimen) ## formula to test test_formula <- longevity ~ mass + volant ## MCMC parameters (number of generations, thin/sampling, burnin) mcmc_parameters <- c(101000, 10, 1000) ## priors mcmc_priors <- list(R = list(V = 1/2, nu = 0.002), G = list(G1 = list(V = 1/2, nu = 0.002))) ## Running MCMCglmm on multiple trees mulTree(mulTree_data, formula = test_formula, parameters = mcmc_parameters, priors = mcmc_priors, output = "longevity.example", ESS = 50) 手册)。