[英]Contrast plot for GAM using mgcv
当使用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
软件包有可能吗?
这是由于在模型中使用的样条线基础上施加了可识别性约束。 这是一个零和约束,可以有效地从每个平滑项使用的基础中删除类似拦截器的基础函数,以使这些不会与模型拦截器混淆。 这使得模型是可识别的,而不是无限的解决方案。
使用标准理论,置信区间必须在y轴与零交叉的地方趋于零(通常是居中效果,但此处显示为一定变换尺度),因为约束意味着在某点x
, effect为0,方差为0。
当然这是胡说八道,最近的研究已经研究了这个问题。 Simon Wood及其同事提供的一种解决方案采用了对Nychka的观察的扩展,即对于高斯情况,平滑的贝叶斯可信区间具有良好的跨函数解释, 可以解释为频繁的置信区间(因此既非指向性,也非同时性) 。 如果估计的平滑度具有平方偏差,且偏差不小于估计的方差,则Nychka的结果(区间的覆盖范围属性)将失败。 显然,当方差达到零时,情况就不会如此,因为估计的平滑度会通过零影响,因为此时的偏差实际上并不完全为零。
Marra and Wood(2012)将这些结果扩展到广义模型设置,通过假设模型中的所有其他术语均已应用可识别性约束,而不是感兴趣的平滑,基本上估计了一个平滑的置信区间。 这将推理的焦点从平滑直接转移到平滑+截距。 您可以在plot.gam()
使用参数seWithMean = TRUE
打开此功能。
我看不到让visreg
做到这一点的简便方法,尽管通过带有type = 'iterms', se.fit = TRUE
选项的type = 'iterms', se.fit = TRUE
predict.gam()
来获取所需信息是微不足道的。 在线性预测变量的尺度上,这将返回每个模型平滑项的贡献以及包括seWithMean
所隐含的校正在内的标准误差。 然后,您可以随心所欲地摆弄它。 例如,加上模型常数项(截距的估计值)应该可以为您提供与问题中显示的数字相近的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.