在R中,我想用一个带有分类变量的gam模型。我以为我可以这样做(猫是分类变量)。
lm(data = df, formula = y ~ x1*cat + x2 + x3);
但是我不能做这样的事情:
gam(data = df, formula = y ~ s(x1)*cat + s(x2) + x3)
但以下工作:
gam(data = df, formula = y ~ cat + s(x1) + s(x2) + x3)
如何将分类变量添加到其中一个样条线中?
答案 0 :(得分:4)
其中一条评论或多或少告诉了你如何。使用by
变量:
s(x1, by = cat)
这会创建“因子平滑”平滑类fs
,其中为每个因子级别创建x1
的平滑函数。平滑参数也是重复的但没有链接,因此它们是不雅估计的。你可以设置
s(x1, by = cat, id = 0)
对所有“子平滑”使用单个平滑参数。
另请注意,对比度不适用于因子,但平滑功能仍受中心约束。这意味着您需要将因子变量指定为固定效果:
s(x1, by = cat) + cat