當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。