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

问题描述

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

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,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,: 
  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")

似乎可行。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...