问题描述
我正在尝试使用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是具有正值和负值的数字变量。 Species
和Feeding
是分类变量。
但是当我使用新的数据集和新的树尝试相同的代码时,它不起作用并且出现错误:
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
并使用ape
和nlme
软件包使用以下代码编写PGLS模型:
venpigot <- gls(PC1 + PC2 + PC3 + PC4 + PC5 + PC6 + PC7 ~ Pigot,ven,correlation = corPagel(1,ventree,fixed = FALSE),method = "ML")
似乎可行。