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