smooth.construct.ad.smooth.spec
位於 mgcv
包(package)。 說明
gam
可以使用一個或兩個變量的自適應平滑,通過 s(...,bs="ad",...)
等術語指定。 (gamm
不能使用此類術語 - 如果這是一個問題,請查看包 AdaptFit
。)此類術語的基礎是 p-spline(的張量積)或三次回歸樣條。離散 P-spline 類型懲罰直接應用於基係數,但懲罰本身具有基表示,允許懲罰的強度隨協變量而變化。懲罰基礎的係數是平滑參數。
調用自適應平滑器時,k
參數指定平滑基礎的維度(一維中默認為 40,二維中為 15),而 m
參數指定懲罰基礎的維度(一維中默認為 5,二維中為 3) )。對於兩個變量的自適應平滑,k
被視為兩個邊基的維度:可以通過使 k
成為雙元素向量來指定不同的邊基維度。類似地,在二維情況下,m
是懲罰的兩個邊際基數的維度,除非它是一個雙元素向量,它為每個邊際指定不同的基數維度(如果懲罰基數基於薄板樣條,則m
直接指定其尺寸)。
默認情況下,P-splines 用於平滑和懲罰基數,但可以通過提供列表作為參數 xt
和指定平滑基數類型的字符向量 xt$bs
來修改。僅"ps"
、"cp"
、"cc"
和"cr"
可用於平滑基礎。懲罰基始終是B-spline,或者循環基的循環B-spline。
為該項估計的平滑參數的總數將是懲罰基礎的維度。請記住,自適應平滑對數據提出了相當嚴格的要求。例如,為 200 個數據的單變量平滑設置 m=10
就像估計 10 個平滑參數,每個參數來自長度為 20 的數據係列。對於 2 個變量的平滑,問題尤其嚴重,其中需要的平滑參數數量獲得合理的靈活性,懲罰可以增長得相當快,但它往往需要非常大的平滑基礎維度才能很好地利用這種靈活性。簡而言之,應謹慎使用自適應平滑。
在實踐中,簡單地變換平滑協變量通常與使用自適應平滑一樣有效。
用法
## S3 method for class 'ad.smooth.spec'
smooth.construct(object, data, knots)
參數
object |
平滑規範對象,通常由術語 |
data |
僅包含該術語所需的數據(包括任何 |
knots |
包含為基礎設置提供的任何結的列表 - 與 |
細節
構造函數通常不直接調用,而是由 gam
在內部使用。要用於基礎設置,建議使用 smooth.construct2
。
此類不能用作張量積平滑的邊際基礎,也不能用作 gamm
。
值
1D 情況下類 "pspline.smooth"
或 2D 情況下類 "tensor.smooth"
的對象。
例子
## Comparison using an example taken from AdaptFit
## library(AdaptFit)
require(mgcv)
set.seed(0)
x <- 1:1000/1000
mu <- exp(-400*(x-.6)^2)+5*exp(-500*(x-.75)^2)/3+2*exp(-500*(x-.9)^2)
y <- mu+0.5*rnorm(1000)
##fit with default knots
## y.fit <- asp(y~f(x))
par(mfrow=c(2,2))
## plot(y.fit,main=round(cor(fitted(y.fit),mu),digits=4))
## lines(x,mu,col=2)
b <- gam(y~s(x,bs="ad",k=40,m=5)) ## adaptive
plot(b,shade=TRUE,main=round(cor(fitted(b),mu),digits=4))
lines(x,mu-mean(mu),col=2)
b <- gam(y~s(x,k=40)) ## non-adaptive
plot(b,shade=TRUE,main=round(cor(fitted(b),mu),digits=4))
lines(x,mu-mean(mu),col=2)
b <- gam(y~s(x,bs="ad",k=40,m=5,xt=list(bs="cr")))
plot(b,shade=TRUE,main=round(cor(fitted(b),mu),digits=4))
lines(x,mu-mean(mu),col=2)
## A 2D example (marked, 'Not run' purely to reduce
## checking load on CRAN).
par(mfrow=c(2,2),mar=c(1,1,1,1))
x <- seq(-.5, 1.5, length= 60)
z <- x
f3 <- function(x,z,k=15) { r<-sqrt(x^2+z^2);f<-exp(-r^2*k);f}
f <- outer(x, z, f3)
op <- par(bg = "white")
## Plot truth....
persp(x,z,f,theta=30,phi=30,col="lightblue",ticktype="detailed")
n <- 2000
x <- runif(n)*2-.5
z <- runif(n)*2-.5
f <- f3(x,z)
y <- f + rnorm(n)*.1
## Try tprs for comparison...
b0 <- gam(y~s(x,z,k=150))
vis.gam(b0,theta=30,phi=30,ticktype="detailed")
## Tensor product with non-adaptive version of adaptive penalty
b1 <- gam(y~s(x,z,bs="ad",k=15,m=1),gamma=1.4)
vis.gam(b1,theta=30,phi=30,ticktype="detailed")
## Now adaptive...
b <- gam(y~s(x,z,bs="ad",k=15,m=3),gamma=1.4)
vis.gam(b,theta=30,phi=30,ticktype="detailed")
cor(fitted(b0),f);cor(fitted(b),f)
作者
Simon N. Wood simon.wood@r-project.org
相關用法
- R smooth.construct.cr.smooth.spec GAM 中的懲罰三次回歸樣條
- R smooth.construct.bs.smooth.spec GAM 中的懲罰 B 樣條
- R smooth.construct.sz.smooth.spec GAM 中的約束因子平滑交互
- R smooth.construct.re.smooth.spec GAM 中的簡單隨機效應
- R smooth.construct.mrf.smooth.spec 馬爾可夫隨機場平滑
- R smooth.construct.gp.smooth.spec 低階高斯過程平滑
- R smooth.construct.tp.smooth.spec GAM 中的懲罰薄板回歸樣條
- R smooth.construct.so.smooth.spec 皂膜平滑劑
- R smooth.construct.ds.smooth.spec 低階 Duchon 1977 樣條
- R smooth.construct.fs.smooth.spec GAM 中平滑交互的因子
- R smooth.construct.ps.smooth.spec GAM 中的 P 樣條
- R smooth.construct.sos.smooth.spec 球體上的樣條線
- R smooth.construct.tensor.smooth.spec 張量積平滑構造函數
- R smooth.construct.t2.smooth.spec 張量積平滑構造函數
- R smooth.construct GAM 中平滑項的構造函數
- R smooth.info 提供有關平滑規範的額外信息的通用函數
- R smooth.terms GAM 中的平滑術語
- R smooth2random 將平滑轉換為適合估計隨機效應的形式
- R smoothCon GAM 平滑項的預測/構造包裝函數
- R scat 用於重尾數據的 GAM 縮放 t 係列
- R slanczos 計算對稱矩陣的截斷特征分解
- R single.index 具有 mgcv 的單指數模型
- R sp.vcov 從 (RE)ML GAM 擬合中提取平滑參數估計器協方差矩陣
- R shash Sinh-arcsinh 位置比例和形狀模型族
- R s 在 GAM 公式中定義平滑
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Adaptive smooths in GAMs。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。