当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R step.gam step.gam 的替代品


R语言 step.gam 位于 mgcv 包(package)。

说明

mgcv 中没有 step.gammgcv 模型选择的默认值是使用预测误差标准,例如 GCV、GACV、Mallows' Cp/AIC/UBRE 或基于似然的 REML 或 ML 方法。由于模型选择的平滑度估计部分是以这种方式完成的,因此以相同的方式执行模型选择的其余部分在逻辑上是最一致的。即通过查看 GCV、AIC、REML 等的变化来决定包含或省略哪些术语。

为了促进全自动模型选择,该软件包实现了两种平滑修改技术,可用于将平滑度缩小到零,作为平滑度选择的一部分。

收缩平滑剂

是平滑器,其中单位矩阵的小倍数被添加到平滑惩罚中,因此足够强的惩罚会将平滑的所有系数缩小到零。作为平滑参数估计的一部分,这种平滑器可以有效地从模型中完全受到惩罚。实现了 2 类收缩平滑器: "cs""ts" ,基于三次回归样条曲线和薄板回归样条平滑器(参见 s )

零空间惩罚

另一种方法是为每个平滑构造一个额外的惩罚,根据其现有的惩罚来惩罚零摆动函数的空间。如果该项的所有平滑参数趋于无穷大,则该项将被惩罚为零,并且实际上会从模型中删除。这种方式的优点是可以自动实现任意平滑。 gamselect 参数导致使用后一种方法。未受处罚的术语(例如 s(x,fx=TRUE) )仍然不受处罚。

REML 和 ML 平滑度选择在这种方法下是等效的,并且模拟证据表明,对于模型选择,它们往往比预测误差标准表现得更好一些。

例子

## an example of GCV based model selection as
## an alternative to stepwise selection, using
## shrinkage smoothers...
library(mgcv)
set.seed(0);n <- 400
dat <- gamSim(1,n=n,scale=2)
dat$x4 <- runif(n, 0, 1)
dat$x5 <- runif(n, 0, 1)
attach(dat)
## Note the increased gamma parameter below to favour
## slightly smoother models...
b<-gam(y~s(x0,bs="ts")+s(x1,bs="ts")+s(x2,bs="ts")+
   s(x3,bs="ts")+s(x4,bs="ts")+s(x5,bs="ts"),gamma=1.4)
summary(b)
plot(b,pages=1)

## Same again using REML/ML
b<-gam(y~s(x0,bs="ts")+s(x1,bs="ts")+s(x2,bs="ts")+
   s(x3,bs="ts")+s(x4,bs="ts")+s(x5,bs="ts"),method="REML")
summary(b)
plot(b,pages=1)

## And once more, but using the null space penalization
b<-gam(y~s(x0,bs="cr")+s(x1,bs="cr")+s(x2,bs="cr")+
   s(x3,bs="cr")+s(x4,bs="cr")+s(x5,bs="cr"),
   method="REML",select=TRUE)
summary(b)
plot(b,pages=1)


detach(dat);rm(dat)

作者

Simon N. Wood simon.wood@r-project.org

参考

Marra, G. and S.N. Wood (2011) Practical variable selection for generalized additive models Computational Statistics and Data Analysis 55,2372-2387

也可以看看

gam.selection

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Alternatives to step.gam。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。