我的数据框看起来像:
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/