我的数据框架如下:
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"
这超出了我的范围,所以如果有人能提供任何值得赞赏的建议,那么这就是我的意思。
答案 0 :(得分:5)
从您的评论中可以清楚地看到,您已将character
变量传递给更平滑的by
。您必须在那里传递factor
变量。对我来说这也是一个常见的问题,我认为这是一个设计缺陷(因为基本R回归函数处理字符变量就好了)。