GAM模型的置信区间


14

阅读 mgcv::gam的帮助页面:

使用拟合模型预测的任何数量的置信度/可信区间都可轻松获得

但是我想不出一种方法来真正得到一个。我以为predict.gam会有一个type=confidencelevel参数,但没有。您能帮助我如何创建它吗?

Answers:


33

以通常的方式:

p <- predict(mod, newdata, type = "link", se.fit = TRUE)

然后请注意,p其中包含一个$se.fit具有标准误差的分量,用于的观测值的预测newdata。然后,可以通过将SE乘以适合您所需水平的值来形成CI。例如,大约95%的置信区间形成为:

upr <- p$fit + (2 * p$se.fit)
lwr <- p$fit - (2 * p$se.fit)

您可以从或高斯分布中替换一个适当的值来替代所需的时间间隔。Ť

请注意,我使用的type = "link"并不是您说的是GAM还是AM。在GAM中,您需要在线性预测变量的尺度上形成置信区间,然后通过应用链接函数的反函数将其转换为响应的尺度:

upr <- mod$family$linkinv(upr)
lwr <- mod$family$linkinv(lwr)

现在请注意,这些间隔非常近似。另外,这些间隔在预测值上是逐点的,并且它们未考虑执行平滑度选择的事实。

可以通过模拟从参数的后验分布计算同时置信区间。我的博客上有一个例子。

如果您想要一个不依赖于平滑参数的置信区间(即,一个我们不知道但要估计平滑参数值的区间),则将其添加unconditional = TRUEpredict()调用中。

另外,如果您不想自己执行此操作,请注意,较新版本的mgcv具有plot.gam()返回包含所有用于创建平滑图及其置信区间的所有数据的对象的函数。您可以只将输出保存plot.gam()在obj中

obj <- plot(model, ....)

然后检查obj,这是每个平滑包含一个分量的列表。添加seWithMean = TRUEplot()调用以获取不依赖于平滑度参数的置信区间。


同时执行CI和参数自举会更多地涉及代码,因此,如果您能以较大的逐点间隔进行操作,则可以。如果没有,我可以为每个例子提供进一步的例子。
恢复莫妮卡-辛普森(G. Simpson)2012年

+1作为答案。确实令人印象深刻的博客文章,我将研究它一段时间以提高我的图形技能。
jbowman

我可以通过任何方式访问该令人印象深刻的博客文章(ucfagls.wordpress.com/2011/06/12/…)?目前,博客需要登录。
geneorama

@geneorama我将我的博客从Wordpress移开了,并花了一年的时间将所有URL重定向到新的URL,但最近我让它失效了。对于那个很抱歉。我已经在新链接中进行了编辑,并且不需要登录。(登录名是为了避免复制两个相同的帖子,而我一直懒得从Wordpress网站上删除这些页面。)
恢复莫妮卡-G. Simpson

原始博客文章(请参阅本问答的编辑历史记录)在创建同时间隔的方式上存在一个根本缺陷。当前(截至2016年12月)版本的Answer中的链接可以正确计算同时间隔。
恢复莫妮卡-G.辛普森

5

如果只想绘制它们,则该plot.gam函数具有使用shade参数默认设置为置信区间的阴影。另请参阅gam.vcomp获取间隔。


5

该软件包mgcv(比gam更新)可以轻松得出可靠的时间间隔。这种贝叶斯方法不同于置信区间,但结果几乎相同,如数值模拟所示(请参阅mgcv中链接的Marra和Wood的论文)。


2
+1 Marra&Wood的论文的一个主要结果是,他们发展了Nychka对为什么经验贝叶斯可信区间在被视为“跨职能”置信区间时也具有相当非凡的常客主义解释/行为的理解/解释。您可以以贝叶斯或频繁方式处理间隔,并使用隐含的coverage属性1个-α间隔大约成立。
恢复莫妮卡-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.