mgcv:如何指定平滑和因子之间的相互作用?

mgcv: how to specify interaction between smooth and factor?

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

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

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

s(x1, by = cat)

这将创建 "factor smooth" 平滑 class fs,其中为每个因子水平创建 x1 的平滑函数。平滑参数也是重复的但没有链接,因此它们的估计不恰当。你可以设置

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

对所有 "sub smooths".

使用单个平滑参数

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

s(x1, by = cat) + cat