【问题标题】:mgcv: how to specify interaction between smooth and factor?mgcv:如何指定平滑和因子之间的交互?
【发布时间】:2017-04-10 17:29:49
【问题描述】:

在 R 中,我想用分类变量拟合一个游戏模型。我想我可以这样做(cat 是分类变量)。

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)

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

【问题讨论】:

  • 这个问题在这里是题外话,因为它专注于 R 中的函数。
  • 您似乎在第二段代码中尝试的事情(以及分类变量和平滑之间的交互)可以使用by 函数来完成。即s(x,by=cat) 将适合cat 的每个级别的单独平滑。

标签: r regression gam mgcv


【解决方案1】:

其中一位 cmets 或多或少告诉了您如何操作。使用by变量:

s(x1, by = cat)

这将创建“因子平滑”平滑类fs,其中为每个因子水平创建x1 的平滑函数。平滑参数也重复但未链接,因此它们被不雅地估计。你可以设置

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

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

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

s(x1, by = cat) + cat

【讨论】:

  • 次要澄清:s(x1, by = cat) 创建一个平滑的"fs" 类 - 如果是这样,您将不需要+ cat 进行居中。如果你想要 mgcv 所说的 "fs" 平滑,那么你需要 s(x1, cat, bs = "fs")(并且没有参数 cat 术语)。
猜你喜欢
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
相关资源
最近更新 更多