首页 > 解决方案 > 在 R 中使用 gls 函数时出现奇点错误

问题描述

我正在使用 R 中 nlme 包中的 gls 函数将线性模型拟合到某些蛇种(因变量)以及栖息地和饮食(解释变量)的头骨形状数据。我能够成功地从中获得结果,但随后想要对结果的稳健性进行一些衡量,所以我随机排列数据的某个子集 n 次,同时在每个排列的子集上运行 gls,并记录 p-值,以便对我的结果对我的数据的随机排列子集的意义有一定的意义。这样做时,我遇到了这样的各种错误:

 Error in glsEstimate(glsSt, control = glsEstControl) : 
  computed "gls" fit is singular, rank 7

除了在不同的运行尝试中排名不同之外,它们是相同的。

这让我感到困惑,因为在使用整个数据集时,该功能似乎正常工作。只有数据的某些子集/排列才会输出此错误,我似乎无法找到导致问题的相关性。

这是我一直在做的一个例子(但不是我的实际数据),它展示了这个问题:

#Creating fake data
Habitat<-sample(rep(c("Arboreal", "Terrestrial", "Fossorial", "Cryptozoic"), 37))
Diet<-sample(rep(c("Annelids", "Mollusks", "Reptiles", "Amphibians"), 37))
TestEco<-cbind(Habitat, Diet)
Shape<-as.matrix(rep(1, 148))

#Running robustness test
n<-100
reps=100

for (i in 1:reps) {

    #Random smaller species subset and corresponding eco data
    species<-sample(1:148, size=n)
    subshape<-Shape[species,]
    subeco<-TestEco[species,]

    #Running a gls analysis with this data subset
    subdata<-data.frame(coords=subshape, Habitat_Use=subeco[,1], Diet=subeco[,2])
    subPGLS<-gls(coords ~ Habitat_Use+Diet, data=subdata, method="ML")

}

我真的很感激任何正确方向的指导。我也很乐意提供更多信息。

谢谢,格雷格

标签: rleast-squaresnlme

解决方案


推荐阅读