我的数据框看起来像:

head(bush_status)
distance  status count
       0 endemic   844
       1 exotic     8
       5 native     3
      10 endemic    5
      15 endemic    4
      20 endemic    3

计数数据是非正态分布的。我正在尝试以两种方式将广义加性模型拟合到我的数据中,以便我可以使用 anova 来查看 p 值是否支持 m2。
m1 <- gam(count ~ s(distance) + status, data=bush_status, family="nb")
m2 <- gam(count ~ s(distance, by=status) + status, data=bush_status, family="nb")

m1 工作正常,但 m2 发送错误消息:
"Error in smoothCon(split$smooth.spec[[i]], data, knots, absorb.cons,
scale.penalty = scale.penalty,  :
  Can't find by variable"

这超出了我的范围,所以如果有人能提供任何建议,将不胜感激!

最佳答案

从您的评论中可以清楚地看出,您在平滑器中将 character 变量传递给 by。您必须在那里传递 factor 变量。这也是我经常遇到的问题,我认为这是一个设计缺陷(因为基本 R 回归函数可以很好地处理字符变量)。

关于r - GAM 模型错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45832928/

10-12 19:56