R中的gam():它是具有自动节点选择功能的样条模型吗?



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

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

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

术语 GAM 涵盖了解决平滑度选择问题的模型和方法的广泛范围。

MGCV使用惩罚回归样条基础,并使用摆动惩罚来选择拟合平滑的复杂度。因此,它不会选择节数作为平滑度选择的一部分。

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

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

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

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

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

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

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

就像我说的,GAM是一个广泛的教会,有很多方法可以适应它们。重要的是要知道您正在使用什么软件以及该软件正在使用什么方法来估算 GAM。掌握这些信息后,您就可以专注于估算 GAM 的特定方法的特定材料。在这种情况下,您应该查看Simon Wood的书GAMs:R的介绍,因为它描述了mgcv包,并由mgcv包的作者撰写。

最新更新