当我们使用带有各向同性平滑器的mgcv包绘制GAM模型时,我们得到的等值线图如下所示:
mgcv
假设在这个模型中,我们有许多其他的各向同性平滑器,例如:
y ~ s(x1, x2) + s(x3, x4) + s(x5, x6)
我的疑惑是:当解释s(x1, x2)的等值线图时,其他各向同性平滑器会发生什么变化?2它们是否“固定在它们的中值”?3我们可以单独解释s(x1, x2)图吗?
s(x1, x2)
pu82cl6c1#
由于此模型在函数中是可加的,因此您可以单独解释 * 函数 *(单独的s()项),但不一定解释为协变量对响应的单独影响。在您的情况下,每个二元平滑中的协变量之间没有重叠,因此您也可以将它们解释为协变量对响应的影响,与其他平滑不同。所有平滑函数通常都受到总和为零的约束,以允许模型常数项(截距)成为可识别的参数。因此,每个图中的0线是模型常数项的值(在链接函数或线性预测值的尺度上)。plot.gam(model)的输出中显示的图是部分效应图。如果您有兴趣了解其他项对作为该项协变量函数的响应的影响,则基本上可以忽略该项。如果您在模型中有其他项,可能在另一项中包含一个或多个协变量,并且您希望查看响应在您改变该项或协变量时如何变化,那么您应该在您感兴趣的变量范围内从模型 * 预测 *,同时将其他变量保持在某些表示值,例如它们的均值或中位数。例如,如果您有
s()
plot.gam(model)
model <- gam(y ~ s(x, z) + s(x, v), data = foo, method = 'REML')
并且您想知道响应如何仅作为x的函数而变化,您可以将z和v固定为代表值,然后在x的值范围内进行预测:
x
z
v
newdf <- with(foo, expand.grid(x = seq(min(x), max(x), length = 100), z = median(z) v = median(v))) newdf <- cbind(newdf, fit = predict(model, newdata = newdf, type = 'response')) plot(fit ~ x, data = newdf, type = 'l')
另外,请参见 mgcv 包中的?vis.gam,它是准备类似这样的图的一种方法,但在那里它进行了艰苦的工作。
?vis.gam
1条答案
按热度按时间pu82cl6c1#
由于此模型在函数中是可加的,因此您可以单独解释 * 函数 *(单独的
s()
项),但不一定解释为协变量对响应的单独影响。在您的情况下,每个二元平滑中的协变量之间没有重叠,因此您也可以将它们解释为协变量对响应的影响,与其他平滑不同。所有平滑函数通常都受到总和为零的约束,以允许模型常数项(截距)成为可识别的参数。因此,每个图中的0线是模型常数项的值(在链接函数或线性预测值的尺度上)。
plot.gam(model)
的输出中显示的图是部分效应图。如果您有兴趣了解其他项对作为该项协变量函数的响应的影响,则基本上可以忽略该项。如果您在模型中有其他项,可能在另一项中包含一个或多个协变量,并且您希望查看响应在您改变该项或协变量时如何变化,那么您应该在您感兴趣的变量范围内从模型 * 预测 *,同时将其他变量保持在某些表示值,例如它们的均值或中位数。
例如,如果您有
并且您想知道响应如何仅作为
x
的函数而变化,您可以将z
和v
固定为代表值,然后在x
的值范围内进行预测:另外,请参见 mgcv 包中的
?vis.gam
,它是准备类似这样的图的一种方法,但在那里它进行了艰苦的工作。