尝试 运行 两个几乎相同的 pgls 模型时一个模型的错误消息

Error message for one model when trying to run two almost identical pgls models

我正在尝试使用包 caper 中的 pgls() 函数创建一个模型,以查看喂养方式对形状的影响。以下模型有效:

latdata <- comparative.data(lattree, lat, Species, vcv=TRUE, vcv.dim=3)
latpigot <- pgls(PC1 + PC2 + PC3 + PC4 + PC5 + PC6 + PC7 ~ Feeding, latdata, lambda = 'ML')

其中 lattree 是我的系统发育树,lat 是我的数据集,Species,PC 和 Feeding 是我的数据集中列的名称。 PC 是具有正值和负值的数值变量。 SpeciesFeeding 是分类变量。

但是当我用新的数据集和新的树尝试相同的代码时它不起作用并且我得到一个错误:

vendata <- comparative.data(ventree, ven, Species, vcv=TRUE, vcv.dim=3)
venpigot <- pgls(PC1 + PC2 + PC3 + PC4 + PC5 + PC6 + PC7 ~ Feeding, vendata, lambda = 'ML')

Error in pgls(PC1 + PC2 + PC3 + PC4 + PC5 + PC6 + PC7 ~ Feeding, vendata,  : 
  Problem with optim:52ERROR: ABNORMAL_TERMINATION_IN_LNSRCH

ven 有 65 个条目,而不是 lat 中的 66 个条目。除了 lattree 中的一个分类单元不在 ventree.

中,树是相同的

据我了解,pgls() 函数在其代码中的某处具有 optim() 函数,这就是导致问题的原因,但我不明白 optim() 函数如何适用以及为什么它可能会导致问题。

有没有人知道可能出了什么问题?

非常感谢,

卡罗莱纳州

编辑: 如果我将 lambda 设置为 1,这似乎有效。但是,我不知道这是否正确或如何决定适当的 lambda 值。有人可以帮忙吗?

我找到了这个网页:

http://blog.phytools.org/2012/11/fitting-model-in-phylogenetic.html

并使用 apenlme 包使用此代码编写 PGLS 模型:

venpigot <- gls(PC1 + PC2 + PC3 + PC4 + PC5 + PC6 + PC7 ~ Pigot, ven, correlation = corPagel(1, ventree, fixed = FALSE), method = "ML")

这似乎有效。