自适应GAM在mgcv中平滑


9

Simon Wood关于GAM的书及其相关的R包mgcv在谈到GAM理论以及对真实数据和模拟数据进行模型拟合时都非常详尽且内容丰富。

对于一维平滑,除了决定是否实施循环基函数和自适应基函数外,实际上没有什么可担心的,与三次,薄板和P样条平滑相比,它可以提供非常不同的预测结果,因为适应性情况下,多个GAM沿着样条曲线拟合到不同区域。据我所知,时间序列建模中循环基数很常见,而当数据相对于响应变量变化很大时,应该考虑采用自适应平滑。但是,应该“谨慎并谨慎地”使用自适应平滑。

我已经研究GAM一段时间了,考虑到我的研究问题,我发现自己在实施顺利方面的想法很多。mgcv包括17种不同的平滑效果(根据我的数量)。我已经考虑了三次和P样条平滑。

我现在的问题是:如果最终目标是将拟合的GAM用于预测目的,那么何时应考虑对非自适应对应变量进行自适应平滑?就我的目的而言,我坚持使用默认的GCV平滑度标准,即使该标准可能会变得不够平滑。

应用生态GAM的文献在不断增长,但是我还没有遇到能够实现自适应平滑的研究。

任何建议表示赞赏。

Answers:


20

mgcv工具箱中的大多数额外平滑实际上都是用于专业应用程序的-对于一般GAM,您可以在很大程度上忽略它们,尤其是单变量平滑(您不需要随机效果样条,球面上的样条,马尔可夫随机场,或肥皂膜平滑剂(例如,如果您拥有单变量数据)。

如果您可以承担设置成本,请使用薄板回归样条(TPRS)。

这些样条曲线在渐近MSE意义上是最佳的,但每次观察都需要一个基函数。Simon在mgcv所做的工作是通过采用完整的TPRS基础并对其进行特征分解来生成标准TPRS的低等级版本。这创建了新的基础,其中k新空间中的第一个基础函数将大部分信号保留为原始基础,但保留的信号要少得多。这是mgcv设法获得仅使用指定数量的基本函数而不是每个观察值使用一个指定数量的TPRS的方式。该特征分解保留了经典TPRS基础的大部分最优性,但是对于大型数据集却需要大量的计算工作。

如果您无法承担TPRS的设置费用,请使用三次回归样条(CRS)

这是快速生成的基础,因此适用于大量数据的问题。但是,它是基于结的,因此在某种程度上,用户现在需要选择这些结的放置位置。对于大多数问题,超出默认的结点放置(在数据的边界处并在它们之间均匀间隔)几乎无济于事,但是如果在协变量范围内采样特别不均匀,则可以选择放置结点例如,均匀分布的协变量样本分位数。

mgcv中的每个其他平滑都是特殊的,用于需要各向同性的平滑或两个或多个协变量的地方,或者用于空间平滑的地方,或者实现收缩,随机效果和随机样条曲线的地方,或者协变量是循环的,或者摆动性在协变量的范围。需要,如果你有需要特殊处理的问题冒险远成光滑的工具箱这一点。

收缩率

有在两个的TPR收缩版本和CRS mgcv。这些会执行样条,其中基础的完美平滑部分也会受到平滑度损失的影响。这使平滑度选择过程可以将平滑度缩小到甚至超出线性函数的范围,甚至基本上缩小到零。这使得平滑度损失也可以执行特征选择。

Duchon样条,P样条和B样条

这些样条线可用于需要单独指定基本订单和罚款订单的专业应用程序。Duchon花键将TPRS泛化。我得到的印象是,P样条曲线已添加到mgcv中,以便与其他基于惩罚性似然方法的比较,并且因为它们是Eilers&Marx在其1996年的论文中使用的样条曲线,刺激了GAM中的许多后续工作。P样条线还可用作其他样条线的基础,例如具有形状约束的样条线和自适应样条线。

mgcv中所实现的B样条线为设置样条线的惩罚和结点提供了很大的灵活性,这可以允许在观察到的数据范围之外进行某些推断。

循环样条

如果可以将协变量的值范围视为一个圆,在该圆上,该范围的终点应实际上是等效的(一年中的月份或日期,运动角度,坡向,风向),则可以对此施加约束基础。如果您有这样的协变量,则强加此约束是有意义的。

自适应平滑器

自适应样条线不是在协变量的各个部分中使用单独的GAM,而是使用加权惩罚矩阵,在该矩阵中权重在协变量范围内平稳变化。例如,对于TPRS和CRS样条曲线,它们在整个协变量范围内都具有相同程度的平滑度。如果不是这种关系,则最终可能会使用比预期更多的自由度,以使样条曲线能够适应摆动和非摆动的零件。平滑文献中的经典示例是

library('ggplot2')
theme_set(theme_bw())
library('mgcv')
data(mcycle, package = 'MASS')
pdata <- with(mcycle,
              data.frame(times = seq(min(times), max(times), length = 500)))

ggplot(mcycle, aes(x = times, y = accel)) + geom_point()

在此处输入图片说明

这些数据清楚地显示出不同平滑度的周期-对于系列的第一部分实际上为零,在冲击过程中很多,随后减小。

如果我们将标准GAM应用于这些数据,

m1 <- gam(accel ~ s(times, k = 20), data = mcycle, method = 'REML')

我们得到了合理的拟合度,但是在开始和结束时存在一些额外的摆动性,times并且所使用的拟合度约为14个自由度

plot(m1, scheme = 1, residuals = TRUE, pch= 16)

在此处输入图片说明

为了适应变化的摆动,自适应样条使用加权惩罚矩阵,其权重随协变量平滑变化。在这里,我使用相同的基本尺寸(k = 20)来对原始模型进行重新拟合,但是现在我们有5个平滑度参数(默认为m = 5),而不是原始的1个。

m2 <- gam(accel ~ s(times, k = 20, bs = 'ad'), data = mcycle, method = 'REML')

请注意,该模型使用的自由度要少得多(〜8),并且拟合的光滑度在端部的摆动要小得多,同时仍然能够充分适应冲击过程中头部加速度的大变化。

在此处输入图片说明

实际情况是,样条曲线具有平滑的基础和惩罚的基础(以使权重随协变量平滑地变化)。通过这两个默认是P样条曲线,但你也可以使用CRS基础类型太(bs只能是一个'ps''cr''cc''cs'。)

如此处所示,是否选择自适应实际上取决于问题。如果您有一个关系,您认为函数形式是平滑的,但是平滑度在该关系的协变量范围内变化,则自适应样条线可能有意义。如果您的系列有快速变化的时期而有较低或逐渐变化的时期,则可能表明可能需要自适应平滑。


1
谢谢加文!我认为这确实是一个很好的答案,也可以帮助其他同样关注的人。
compbiostats

对于我的问题,我拟合了一条单调递增的曲线,该曲线最终稳定在水平渐近线处。在我的曲线开始时,数据迅速增加,然后逐渐趋于渐近。在某些情况下,有必要在观察数据范围之外进行外推(近/远)。我的模型非常简单,但是我意识到这里的预测充其量只是推测性的。
compbiostats
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.