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


R choose.k 平滑的基本尺寸選擇


R語言 choose.k 位於 mgcv 包(package)。

說明

使用懲罰回歸平滑器時,選擇基本維度並檢查選擇。

懲罰回歸平滑器通過使用相對適中大小的基礎 k 進行定義,從而獲得計算效率。在 mgcv 包中設置模型時,在模型公式中使用 ste 項,必須選擇 k:默認值本質上是任意的。

實際上, k-1 (或 k )設置與 s 平滑相關的自由度上限(平滑上的可識別性約束通常會丟失 1 個自由度)。對於 te 平滑,自由度的上限由為約束的每個邊平滑提供的 k 值的乘積給出。然而,實際有效自由度由擬合期間選擇的懲罰程度(GCV、AIC、REML 或任何指定的值)控製。例外情況是如果使用 fx=TRUE 選項指定平滑,在這種情況下它不會受到懲罰。

因此,k 的精確選擇通常並不重要:它應該選擇足夠大,以便您有足夠的自由度來相當好地表示底層 ‘truth’,但又足夠小以保持合理的計算效率。顯然‘large’和‘small’取決於正在解決的特定問題。

與所有模型假設一樣,能夠非正式地檢查 k 的選擇非常有用。如果模型項的有效自由度估計遠小於k-1,那麽這不太值得,但隨著 EDF 方法k-1,檢查可能很重要。有用的通用方法如下:(i)擬合模型並提取偏差殘差; (ii) 對於模型中的每個平滑項,使用大幅增加的 k 來擬合等效的、單一的、平滑的殘差,以查看殘差中是否存在可以通過增加 k 來解釋的模式。下麵提供了示例。

顯而易見但成本更高的替代方案是簡單地增加可疑的 k 並重新安裝原始模型。如果這樣做沒有導致統計上重要的變化,那麽 k 就足夠大了。 (當 k 增加時,平滑度選擇標準和/或有效自由度的變化提供了明顯的數值測量,表明擬合是否發生了實質性變化。)

gam.check 對基本尺寸運行基於模擬的簡單檢查,這有助於標記 k 過低的術語。從 plot.gam 可用的部分殘差中也可以看到嚴重太小的 k

可能導致混淆的一種情況是:模型使用 k=10 擬合以獲得平滑項,並且該項的 EDF 估計為 7.6,低於最大值 9。然後使用 k=20 重新擬合該模型EDF 增加到 8.7 - 發生了什麽 - 為什麽 EDF 第一次不是 8.7?解釋是,k=20 的函數空間包含 EDF 8.7 的函數子空間比 k=10 的函數空間更大:這個較大子空間中的函數之一比 EDF 8.7 中的任何函數都更適合數據。更小的子空間。然而,這些微妙之處很少對從模型擬合中得出的統計結論產生太大影響。

例子

## Simulate some data ....
library(mgcv)
set.seed(1) 
dat <- gamSim(1,n=400,scale=2)

## fit a GAM with quite low `k'
b<-gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=6)+s(x3,k=6),data=dat)
plot(b,pages=1,residuals=TRUE) ## hint of a problem in s(x2)

## the following suggests a problem with s(x2)
gam.check(b)

## Another approach (see below for more obvious method)....
## check for residual pattern, removeable by increasing `k'
## typically `k', below, chould be substantially larger than 
## the original, `k' but certainly less than n/2.
## Note use of cheap "cs" shrinkage smoothers, and gamma=1.4
## to reduce chance of overfitting...
rsd <- residuals(b)
gam(rsd~s(x0,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
gam(rsd~s(x1,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
gam(rsd~s(x2,k=40,bs="cs"),gamma=1.4,data=dat) ## `k' too low
gam(rsd~s(x3,k=40,bs="cs"),gamma=1.4,data=dat) ## fine

## refit...
b <- gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=20)+s(x3,k=6),data=dat)
gam.check(b) ## better

## similar example with multi-dimensional smooth
b1 <- gam(y~s(x0)+s(x1,x2,k=15)+s(x3),data=dat)
rsd <- residuals(b1)
gam(rsd~s(x0,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
gam(rsd~s(x1,x2,k=100,bs="ts"),gamma=1.4,data=dat) ## `k' too low
gam(rsd~s(x3,k=40,bs="cs"),gamma=1.4,data=dat) ## fine

gam.check(b1) ## shows same problem

## and a `te' example
b2 <- gam(y~s(x0)+te(x1,x2,k=4)+s(x3),data=dat)
rsd <- residuals(b2)
gam(rsd~s(x0,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
gam(rsd~te(x1,x2,k=10,bs="cs"),gamma=1.4,data=dat) ## `k' too low
gam(rsd~s(x3,k=40,bs="cs"),gamma=1.4,data=dat) ## fine

gam.check(b2) ## shows same problem

## same approach works with other families in the original model
dat <- gamSim(1,n=400,scale=.25,dist="poisson")
bp<-gam(y~s(x0,k=5)+s(x1,k=5)+s(x2,k=5)+s(x3,k=5),
        family=poisson,data=dat,method="ML")

gam.check(bp)

rsd <- residuals(bp)
gam(rsd~s(x0,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
gam(rsd~s(x1,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
gam(rsd~s(x2,k=40,bs="cs"),gamma=1.4,data=dat) ## `k' too low
gam(rsd~s(x3,k=40,bs="cs"),gamma=1.4,data=dat) ## fine

rm(dat) 

## More obvious, but more expensive tactic... Just increase 
## suspicious k until fit is stable.

set.seed(0) 
dat <- gamSim(1,n=400,scale=2)
## fit a GAM with quite low `k'
b <- gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=6)+s(x3,k=6),
         data=dat,method="REML")
b 
## edf for 3rd smooth is highest as proportion of k -- increase k
b <- gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=12)+s(x3,k=6),
         data=dat,method="REML")
b 
## edf substantially up, -ve REML substantially down
b <- gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=24)+s(x3,k=6),
         data=dat,method="REML")
b 
## slight edf increase and -ve REML change
b <- gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=40)+s(x3,k=6),
         data=dat,method="REML")
b 
## defintely stabilized (but really k around 20 would have been fine)

作者

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

參考

Wood, S.N. (2017) Generalized Additive Models: An Introduction with R (2nd edition). CRC/Taylor & Francis.

https://www.maths.ed.ac.uk/~swood34/

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Basis dimension choice for smooths。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。