具有一个协变量的 LOESS 和 GAM 是否相同?

机器算法验证 广义加法模型 黄土 毫克CV
2022-04-12 09:17:34

我正在学习广义加法模型 (GAMS),并在多个位置发现了一个声明,即具有一个自变量的 GAM 与双变量 LOESS 回归相同。这种说法正确吗?

loess使用baseR中的gam函数和Rpackage中的函数,我一直无法获得相同的答案mgcv这是 2009 年另一个论坛上类似问题的链接:http ://r.789695.n4.nabble.com/Difference-between-gam-and-loess-td881045.html

下面是我的R代码,我根据上面链接中提供的代码进行了修改。中的gam函数R有许多选项。如果具有一个自变量的 GAM 与双变量 LOESS 回归相同,有人可以提供所需的选项设置吗?span我已经在函数中尝试了广泛的值,loess并且只显示了一些。

感谢您的任何建议或帮助。

library(mgcv)

set.seed(1234) 

# generate data
x <- sort(runif(100)) 
y <- sin(2*pi*x) + rnorm(10, sd=0.1) 

mgcv.1 <- gam(y ~ s(x), family=gaussian(), weights=NULL, subset=NULL,
          offset=NULL, method = "GCV.Cp",
          optimizer=c("outer", "newton"), control=list(), scale=0,
          select=FALSE, knots=NULL, sp=NULL, min.sp=NULL, H=NULL, gamma=1,
          fit=TRUE, paraPen=NULL, G=NULL, drop.unused.levels=TRUE,
          bs="cr")

base.r <- loess(y ~ x, degree=1, span=0.50) ; summary(base.r$fitted - mgcv.1$fitted)
base.r <- loess(y ~ x, degree=1, span=0.75) ; summary(base.r$fitted - mgcv.1$fitted)
base.r <- loess(y ~ x, degree=2, span=0.50) ; summary(base.r$fitted - mgcv.1$fitted)
base.r <- loess(y ~ x, degree=2, span=0.75) ; summary(base.r$fitted - mgcv.1$fitted)

编辑

根据此处链接的讲义:

http://polisci.msu.edu/jacoby/icpsr/regress3/lectures/week4/16.GAM.pdf

中的gam函数mgcv仅适合平滑样条曲线,但可以在 中完成局部多项式回归S-PLUS也许这就是为什么我无法获得与mgcv使用该loess功能相同的答案的原因?也许另一个 GAM 包R确实允许局部多项式回归?

3个回答

不是一个完整的答案,但评论太长了:s设置样条曲线,而loess进行局部回归。

gam包中(也许mgcv也不太熟悉那个包),您还可以提供本地回归,如

library(gam)

set.seed(1234) 

# generate data
x <- sort(runif(100)) 
y <- sin(2*pi*x) + rnorm(10, sd=0.1) 

gam.1 <- gam(y ~ lo(x))
base.r <- loess(y ~ x) 
summary(base.r$fitted - gam.1$fitted)
plot(base.r$fitted,gam.1$fitted)

这也不会产生相同的拟合值,但也许您可以进一步使用 和 的lo设置loess

“LOESS”使用局部核回归,但不是纯局部核回归。

预先指定的带宽或预先指定的一组可变带宽的局部回归可以写为数据的线性函数。

然而,LOESS 是非线性的,因为它试图向异常值引入一定程度的“鲁棒化”(通过降低大残差和重新拟合的权重)。

因此,在一般情况下,通过使用局部线性回归的设置并不能完全再现 LOESS 结果,但如果数据足够“好”,如果使用相同的设置,则可能存在对应关系—— LOESS 还使用“跨度”参数来改变带宽以“覆盖”给定的数据部分;即使没有大残差的任何问题,局部回归方法也必须以相同的方式调整带宽以重现它。

如果您的链接函数是恒等式(即,错误的 PDF 是高斯函数),则单协变量 GAM 只不过是散点图的平滑版本。这通常是一个局部加权散点图平滑器。阅读 Hastie 和 Tibshirani 1986,特别是他们的第 5.2 节:他们通过 Fisher 局部评分拟合 GAM,其中加权最小二乘拟合被更一般的(局部)平滑代替。尽管他们不称其为 LOESS,但他们谈论的是具有权重 (dp/dq)^2*V^(-1)) 的运行线更平滑,这基本上是局部加权平滑器。如果您的链接函数是恒等式,则评分过程没有迭代,并且线性估计量 eta 减少到散点图的平滑度。

为什么 R 不反映这种行为我不知道(我对 R 知之甚少)。我想你必须在 LOESS 函数中指定你的权重都是 1(否则,我认为它们会自动取决于观察点之间的距离)和/或肯定你必须在 GAM 和 LOESS 中使用相同的跨度。