当使用visreg包可视化带有对比图的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包中是可能的吗?
发布于 2017-09-20 18:24:42
这是由于对模型中使用的样条基/基施加的可识别性约束。这是一种和到零的约束,有效地从每个平滑项的基中删除了一个类似截距的基函数,这样它们就不会与模型截距混淆。这使得模型可以被识别,而不是具有无穷大的解。
用标准理论,置信区间在y轴上过零时(通常是中心效应,但在某种变换尺度上),置信区间必须趋于零,因为约束意味着在某个点x,效应为0,且方差为0。
这当然是胡说八道,最近的研究已经对这个问题进行了调查。Simon和他的同事提供的一种解决方案是对Nychka的观察进行了扩展,即对于高斯情况,平滑的by可信区间具有良好的跨函数解释,作为频率置信区间(所以不是点态,但也不是同时存在的)。Nychka的结果(区间的覆盖特性)在估计光滑具有不小于估计方差的平方偏差的情况下失败;很明显,当方差达到零时,当估计的平滑通过零效应时,这种情况是失败的,因为此时偏差实际上不是零。
Marra和Wood (2012)将这些结果推广到广义模型设置,通过假设模型中的所有其他项都有可识别性约束,而不是感兴趣的光滑性约束,基本估计了其中一个光滑的置信区间。这将推理的焦点从平滑的直接转移到平滑的+截距。您可以在plot.gam()中用参数seWithMean = TRUE打开它。
然而,我不认为让visreg这样做很容易,尽管通过predict.gam()通过选项type = 'iterms', se.fit = TRUE返回您想要的信息是很简单的。这将在线性预测器的尺度上返回每个模型平滑项的贡献加上包含seWithMean隐含的校正的标准误差。然后,您可以根据实际情况来处理这个问题;例如,添加模型常量项(拦截的估计值)应该可以为您提供一些与您在问题中显示的数字相近的内容。
https://stackoverflow.com/questions/46299159
复制相似问题