如果您想从一组协变量中进行选择,那么执行此操作的原则方法是对模型中的每个平滑器进行一些额外的收缩,以便在需要时可以将它们完全排除在模型之外。
在典型设置中,摆动惩罚基于估计函数的曲率(二阶导数)。这种惩罚会影响摆动基函数,因为它们具有非常量的二阶导数。对每个协变量执行的基扩展导致基函数存在于零空间或惩罚的范围空间中。范围空间中的那些是 wiggly 函数,如果我们不需要拟合这样的 wiggly 函数,它们可以被惩罚并缩小到零效应。
零空间中的基函数是平坦函数(通过可识别性约束移除,因为它与模型截距混淆)和线性函数,曲率为零。因此,处罚不会影响他们。这就是为什么您可以估计通过mgcv拟合的 GAM 中的线性效应,但您无法摆脱线性部分,因为它完全不受惩罚的影响,因为它没有摆动。
Giampiero Marra 和 Simon Wood (2011) 表明,通过专门针对惩罚零空间分量的额外惩罚,可以在 GAM 中执行有效的模型选择。额外的惩罚只影响完全平滑的项,但它具有将线性效应缩小回零效应的效果,因此如果这是合理的,则完全脱离模型。
为此, mgcv有两个选项:
- 收缩平滑剂,和
- 双重惩罚方法。
收缩平滑器是普通基类型的特殊版本,但它们在形成惩罚矩阵期间受到特征分解,其中那些完全平滑的基函数返回零特征值。收缩平滑器只是为特征值为零的项添加了一个非常小的值,这导致项现在受到用于选择平滑度参数的通常摆动惩罚的影响。这种方法表明,摆动函数应该比零空间中的函数收缩得更多,因为零特征值项的少量添加意味着这些项受摆动惩罚的影响比范围空间中的函数小。
通过将基础类型更改为以下之一,可以为部分或全部平滑选择收缩平滑器:
bs = 'ts'
— 对于薄板回归样条基础的收缩版本,
bs = 'cs'
— 三次回归样条基础的收缩版本。
此参数将添加到s()
您要在模型公式中缩小的任何函数。
双惩罚方法只是增加了第二个惩罚,它只影响零空间中的函数。现在有两种处罚生效;
- 通常会影响范围空间中的函数的摆动惩罚,以及
- 影响惩罚零空间中函数的收缩惩罚。
第二个惩罚允许线性项也一起收缩,这两个惩罚都可能导致平滑函数从模型中完全移除。
双惩罚方法的优点是,从收缩的角度来看,零空间和范围空间函数的处理方式相同。在收缩平滑方法中,我们先验地期望摆动项比平滑项收缩得更多。在双重惩罚方法中,我们不做这个假设,只是让所有的函数都被缩小。
双惩罚方法的缺点是现在每个平滑都需要估计两个“平滑”参数;通常与摆动惩罚相关的平滑度参数,以及控制应用于零空间中函数的收缩的平滑度参数。
此选项在mgcv中通过 ; 的select = TRUE
参数激活gam()
。这意味着它为模型公式中的所有平滑打开。
Marra 和 Wood (2011) 的结果表明,双重惩罚方法的效果略好于收缩窒息方法。
Marra, G. 和 SN Wood。2011. 广义加性模型的实用变量选择。计算。统计。数据肛门。55:2372-2387。doi:10.1016/j.csda.2011.02.004