使用 mgcv 的 GAM 对比图

Contrast plot for GAM using mgcv

当使用 visreg 包可视化具有 contrast 图的 GAM 时,当图形为 U 形时,置信区间在拐点处变为零:

# Load libraries
library(mgcv)
library(visreg)

# Synthetic data
df <- data.frame(a = -10:10, b = jitter((-10:10)^2, amount = 10))

# Fit GAM
res <- gam(b ~ s(a), data = df)

# Make contrast figure
visreg(res, type = "contrast")

这看起来很狡猾,并且在制作 条件 情节(即 visreg(res, type = "conditional"))时不会发生,所以我正在看 mgcv 包制作相同的情节。我可以使用 mgcv(例如 plot.gam(res))制作 条件 图,但我没有看到制作 对比情节。 mgcv 包可以做到这一点吗?

这是由于对模型中使用的样条 basis/bases 施加了可识别性约束。这是一个求和为零的约束,并有效地从用于每个平滑项的基础中删除了一个类似截距的基函数,这样它们就不会与模型截距混淆。这允许模型是可识别的,而不是有无限的解决方案。

使用标准理论,置信区间在 y 轴上与零交叉的地方必须趋于零(通常是居中效应,但如图所示,它在某些转换尺度上),因为约束意味着在某个点 x,效果为 0,方差为 0。

这当然是无稽之谈,最近的研究已经调查了这个问题。 Simon Wood 及其同事提供的一种解决方案扩展了 Nychka 的观察结果,即对于高斯情况,平滑的贝叶斯可信区间具有良好的 跨函数 解释作为常客置信区间(所以不是逐点的,但也不是同时的)。 Nychka 的结果(区间的覆盖属性)在估计平滑的平方偏差不显着小于估计方差的情况下失败;显然,当方差达到零时,情况并非如此,其中估计的平滑通过零效应,因为此时偏差实际上并不完全为零。

Marra 和 Wood(2012)将这些结果扩展到广义模型设置,基本上通过假设模型中的所有其他项都应用了可识别性约束来估计一个平滑的置信区间,但不是兴趣的顺利。这将推理的重点从平滑直接转移到平滑+截距。您可以在 plot.gam() 中使用参数 seWithMean = TRUE.

打开它

我没有看到让 visreg 执行此操作的简单方法,尽管通过 predict.gam() 和选项 type = 'iterms', se.fit = TRUE 取回您想要的信息是微不足道的。 returns,在线性预测器的尺度上,每个模型平滑项的贡献加上标准误差,包括 seWithMean 隐含的校正。然后你就可以fiddle尽情享受了;添加模型常数项(截距的估计值)例如应该为您提供接近您在问题中显示的数字的东西。