mgcv:如何指定smooth和factor之间的交互?

时间:2017-04-10 17:29:50

标签: r regression gam mgcv

在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)

如何将分类变量添加到其中一个样条线中?

1 个答案:

答案 0 :(得分:4)

其中一条评论或多或少告诉了你如何。使用by变量:

s(x1, by = cat)

这会创建“因子平滑”平滑类fs,其中为每个因子级别创建x1的平滑函数。平滑参数也是重复的但没有链接,因此它们是不雅估计的。你可以设置

s(x1, by = cat, id = 0)

对所有“子平滑”使用单个平滑参数。

另请注意,对比度不适用于因子,但平滑功能仍受中心约束。这意味着您需要将因子变量指定为固定效果:

s(x1, by = cat) + cat