首页 > 解决方案 > R中的gam():它是具有自动结选择的样条模型吗?

问题描述

我运行一个分析,我需要绘制两个变量之间的非线性关系。我读到了样条回归,其中一个挑战是找到结的数量和位置。所以我很高兴在这本书中读到广义加法模型(GAM)适合“自动选择节点的样条模型”。因此,我开始阅读如何在 R 中进行 GAM 分析,我惊讶地发现该gam()函数有一个knots参数。

现在我很困惑。R中的函数是否gam()运行自动找到最佳结的GAM?如果是这样,我们为什么要提供节点参数?此外,文档说“如果未提供它们,则样条的结均匀地放置在该术语所指的协变量值中。例如,如果将 101 个数据与 x 的 11 个结样条拟合,那么就会有一个结每 10 个(有序)x 值”。这听起来不像是一个非常复杂的节点选择算法。

我找不到另一个来源来验证 GAM 是具有自动节点选择的样条模型的说法。那么该函数是否与degree 为 3(三次)的gam()函数相同,不同之处在于为参数设置了一些默认值?pspline()gam()df

标签: rsplinenon-linear-regressiongam

解决方案


GAM 一词涵盖了解决平滑选择问题的广泛的模型和方法。

mgcv使用惩罚回归样条基,带有摆动惩罚来选择拟合平滑的复杂性。因此,它不会选择结数作为平滑度选择的一部分。

基本上,作为用户,您可以为每个平滑函数选择使用多大的基(通过在模型公式中使用ks()te()等函数中设置参数)。用于k设置平滑函数摆动度上限的值。惩罚衡量函数的摆动(它通常是在协变量范围内平滑求和的平方二阶导数)。然后,该模型估计表示每个平滑的基函数的系数值,并通过最大化惩罚对数似然标准来选择平滑参数。惩罚对数似然是对数似然加上对每个平滑的摆动的一些惩罚。

基本上,您为每个平滑设置预期复杂度(摆动)的上限,并且在拟合模型时,惩罚项会缩小每个平滑后面的系数,以便从拟合中移除多余的摆动。

通过这种方式,平滑度参数控制发生了多少收缩,从而控制了每个拟合平滑度的复杂程度(摆动)。

这种方法避免了选择在哪里放置结的问题。

这并不意味着用于表示平滑的基础没有结。在您提到的三次回归样条基础中,您给出的值k设置了基础的维数,这意味着一定数量的结。除非用户提供一组不同的节点位置,否则这些节点将放置在平滑中涉及的协变量的边界处,然后均匀地放置在协变量的范围内。然而,一旦设置了结的数量和它们的位置,从而形成了基础,它们就是固定的,平滑的摆动由摆动惩罚控制,而不是通过改变节点的数量。

你也必须非常小心 R,因为有两个包提供了一个gam()功能。原始的gam包提供了 Hastie 和 Tibshirani 在原始 GAM 书中描述的软件和方法的 R 版本。如上所述,这个包不适合使用惩罚回归样条的 GAM。

R 附带了mgcv包,它使用我上面概述的惩罚回归样条拟合 GAM。您可以使用参数 控制每个平滑的基的大小(维数)k。没有论据df

就像我说的,GAM 是一个广泛的教会,有很多方法可以适应它们。了解您正在使用什么软件以及该软件使用什么方法来估计 GAM 非常重要。一旦您掌握了这些信息,您就可以针对该特定方法估算 GAM 的特定材料进行搜索。在这种情况下,您应该查看 Simon Wood 的书GAMs: an Introduction with R,因为它描述了mgcv包,由mgcv包的作者编写。


推荐阅读