广义加性模型(GAM),交互作用和协变量


12

我一直在探索许多用于预测的工具,并且发现广义可加模型(GAM)具有最大的潜力。GAM非常棒!它们允许非常简洁地指定复杂的模型。但是,同样的简洁性使我有些困惑,特别是在GAM如何理解交互作用项和协变量方面。

考虑一个示例数据集(发布后的代码可重现),其中y是一个由几个高斯扰动的单调函数,外加一些噪声:

在此处输入图片说明

数据集具有一些预测变量:

  • x:数据索引(1-100)。
  • w:辅助功能标记出y存在高斯的部分。w的值为1-20,其中x介于11到30之间,以及51到70之间。否则w为0。
  • w2w + 1,因此没有0值。

R的mgcv软件包可轻松为这些数据指定许多可能的模型:

在此处输入图片说明

模型1和2非常直观。默认情况下,y仅根据索引值进行x平滑度预测会产生一些模糊正确的提示,但过于平滑。y仅根据w结果预测存在于的“平均高斯”模型中y,而没有其他w值的“感知”模型,所有其他数据点的值均为0。

模型3同时使用xw作为1D平滑,产生了很好的拟合。模型4使用xw在2D平滑中使用,也非常适合。这两个模型非常相似,尽管不完全相同。

模型5 x通过“ 模型” w。模型6则相反。mgcv的文档指出,“ by参数可确保平滑函数乘以[by参数中给定的协变量]”。那么5和6型不应该等效吗?

模型7和8使用预测变量之一作为线性项。这些对我来说很直观,因为它们只是在使用GLM对这些预测变量进行处理,然后将影响添加到模型的其余部分。

最后,模型9与模型5相同,除了模型x“通过” w2(为w + 1)进行了平滑处理。对我而言,奇怪的是,w2“ by”交互中缺少零会产生明显不同的效果。

所以,我的问题是:

  • 3型和4型的规格之间有何区别?还有其他例子可以更清楚地说明差异吗?
  • 确切地说,“通过”在这里做什么?我在伍德的书中读到的大部分内容以及该网站的内容都表明“ by”会产生乘法效应,但是我很难理解它的直觉。
  • 为什么模型5和9之间会有如此显着的差异?

接下来是Reprex,用R编写。

library(magrittr)
library(tidyverse)
library(mgcv)

set.seed(1222)
data.ex <- tibble(
  x = 1:100,
  w = c(rep(0, 10), 1:20, rep(0, 20), 1:20, rep(0, 30)),
  w2 = w + 1,
  y = dnorm(x, mean = rep(c(20, 60), each = 50), sd = 3) + (seq(0, 1, length = 100)^2) / 2 + rnorm(100, sd = 0.01)
)

models <- tibble(
  model = 1:9,
  formula = c('y ~ s(x)', 'y ~ s(w)', 'y ~ s(x) + s(w)', 'y ~ s(x, w)', 'y ~ s(x, by = w)', 'y ~ s(w, by = x)', 'y ~ x + s(w)', 'y ~ w + s(x)', 'y ~ s(x, by = w2)'),
  gam = map(formula, function(x) gam(as.formula(x), data = data.ex)),
  data.to.plot = map(gam, function(x) cbind(data.ex, predicted = predict(x)))
)

plot.models <- unnest(models, data.to.plot) %>%
  mutate(facet = sprintf('%i: %s', model, formula)) %>%
  ggplot(data = ., aes(x = x, y = y)) +
  geom_point() +
  geom_line(aes(y = predicted), color = 'red') +
  facet_wrap(facets = ~facet)
print(plot.models)

使用tidyverse程序包作为reprex的依赖项对这里的人来说有点反社会。我使用了很多这样的软件包,但仍然需要安装节才能运行您的代码。最小(即仅列出所需的软件包)会更有用。就是说,谢谢你的代表;我现在正在运行
恢复莫妮卡-G.辛普森

Answers:


11

Q1模型3和模型4有什么区别?

模型3是纯加性模型

y=α+f1(x)+f2(w)+ε

因此我们有一个常数加上的平滑效果以及的平滑效果。αxw

模型4是两个连续变量的平滑交互

y=α+f1(x,w)+ε

从实际意义上讲,模型3表示无论的影响如何,对响应的影响都是相同的。如果我们将固定为某个已知值并在一定范围内变化,则对拟合模型的贡献将保持不变。如果希望通过对模型3进行-ing来获得的固定值和几个不同的值,并使用方法的参数来进行验证。您会看到不断为的拟合/预测值做出贡献。wxxwf1(x)predict()xwtype = 'terms'predict()s(x)

模型4并非如此。该模型表示的平滑效果随的值平滑变化,反之亦然。xw

请注意,除非和的单位相同,或者我们期望两个变量都具有相同的摆动性,否则您应该使用它来拟合交互作用。xwte()

m4a <- gam(y ~ te(x, w), data = data.ex, method = 'REML')

pdata <- mutate(data.ex, Fittedm4a = predict(m4a))
ggplot(pdata, aes(x = x, y = y)) +
  geom_point() +
  geom_line(aes(y = Fittedm4a), col = 'red')

在此处输入图片说明

从某种意义上说,模型4是合适的

y=α+f1(x)+f2(w)+f3(x,w)+ε

其中是和的“主要”平滑效果的纯平滑交互,并且出于可识别性的考虑,从的基础上。您可以通过以下方式获得此模型f3xwf3

m4b <- gam(y ~ ti(x) + ti(w) + ti(x, w), data = data.ex, method = 'REML')

但请注意,此估算值包含4个平滑度参数:

  1. 与的主要平滑效果相关的一个x
  2. 与的主要平滑效果相关的一个w
  3. 与交互张量积平滑中的边缘平滑相关的一个x
  4. 与交互张量积平滑中的边缘平滑相关的一个w

te()模型仅包含两个平滑度参数,每个边缘参数一个。

所有这些模型的一个基本问题是的影响并非严格平滑。的影响降至0(或1 in )时存在不连续性。这会显示在您的绘图中(我将在此处详细显示)。www2

Q2,“ by”到底在做什么?

by变量平滑可以根据传递给by参数的内容来做很多不同的事情。在您的示例中,by变量是连续的。在那种情况下,您将得到一个变化的系数模型。这是一个模型,其中的线性效应随平滑变化。用等式来讲,这就是您说的模型5正在做的事情wwx

y=α+f1(x)w+ε

如果对于某些给定的值,这还不是很清楚(当我第一次查看这些模型时,这不是我的意思),我们将以此值评估平滑函数,然后将其等效为;换句话说,它是在给定值下的线性效应,并且这些线性效应随平滑变化。具体示例请参见《西蒙书》第二版第7.5.3节,其中协变量的线性效应会改变空间的平滑函数(纬度和经度)。xβ1wwxx

Q3为什么模型5和9之间会有如此显着的差异?

我认为模型5和9之间的差异仅仅是由于乘以0或乘以1。对于前者,模型唯一项的影响为0,因为。在模型9中,在的高斯没有贡献的那些区域中,您有。由于是〜指数函数,因此您可以将此叠加在的整体效果上。f1(x)wf1(x)×0=0f1(x)×1=f1(x)wf1(x)w

换句话说,模型5在为0 处都包含零趋势,而模型9在为0(1)处都包含〜指数趋势,在其上叠加了的变化系数效应。www


这是对Q1的有用解答,谢谢!选择1D平滑或单个2D平滑的总和似乎大致(再次大致)类似于标准线性建模中的主效果与交互。但这使by参数的存在更加令人困惑。
jdobres

我现在在第二季度添加了一些内容,希望可以解释这些模型的功能。我现在来看第三季度。
恢复莫妮卡-G.辛普森

我认为答案Q3是算术相互作用的只是一个简单的问题是什么型号的变系数部分5和9
恢复莫妮卡- G.辛普森

很有帮助!为了澄清问题2,您是说在“ by”自变量中提供的预测变量实质上成为平滑预测变量结果的额外系数吗?我怀疑我的直觉是错的,因为它应该导致模型5寻找类似模型2
jdobres

在M2中,您具有,在M5中,您具有,前者是的平滑,后者表示的线性效应随的平滑函数而变化。这些是完全不同的。请注意,在5中的影响是线性的(当 > 10 时没有减小),但是线性度可以通过平滑地修改。在M2中,您具有的平滑效果。α + f 1x wα+f1(w)α+f1(x)ww w x w w x wwwxwwxw
恢复莫妮卡-G.辛普森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.