这些问题与我在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"
}
}
但是这些行显然不能解决问题。预先感谢您的帮助。
答案 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)
手册)。