smooth.construct.ps.smooth.spec
位於 mgcv
包(package)。 說明
gam
可以使用 Eilers 和 Marx (1996) 提出的單變量 P-splines,通過 s(x,bs="ps")
等術語指定。這些術語使用B-spline基數,並通過直接應用於基數係數的離散懲罰進行懲罰。循環 P-splines 由 s(x,bs="cp",...)
等模型術語指定。這些基可用於張量積平滑(請參閱te
)。
P-splines 的優點是可以靈活地混合懲罰和基序(但另請參閱 d.spline
)。這通常提供了一種有用的方式‘taming’,否則表現不佳。然而,在常規使用中,具有基於導數懲罰的樣條曲線(例如 "tp"
或 "cr"
基數)往往會導致 MSE 性能稍好,大概是因為樣條曲線良好的近似理論特性與導數懲罰的使用密切相關。
用法
## S3 method for class 'ps.smooth.spec'
smooth.construct(object, data, knots)
## S3 method for class 'cp.smooth.spec'
smooth.construct(object, data, knots)
參數
object |
平滑規範對象,通常由術語 |
data |
僅包含該術語所需的數據(包括任何 |
knots |
包含為基礎設置提供的任何結的列表 - 與 |
細節
s(x,bs="ps",m=c(2,3))
形式的平滑項指定二階 P-spline 基礎(三次樣條),並對係數進行三階差分罰分(0 階是嶺罰分)。如果m
是單個數字,則將其作為基本順序和懲罰順序。默認為“三次樣條”m=c(2,2)
。
對於 "ps"
項,默認基本維度 k
是 10 和 m[1]+1
中的較大者;對於 "cp"
項,默認基本維度 k
是 10 和 m[1]
中的較大者。 m[1]+1
和 m[1]
是兩種類型的基礎尺寸下限。
如果提供了結,則結的數量應比 "cp"
平滑的基本尺寸(即 k+1
)多 1。對於 "ps"
基礎,提供的結的數量應為 k + m[1] + 2
,中間 k-m[1]
結的範圍應包括所有協變量值。參見示例。
或者,對於兩種類型的平滑,可以提供 2 節,表示可以評估樣條線的下限和上限(但是,不要使該範圍太寬,否則您最終可能無法獲得有關某些基礎的信息)係數,因為相應的基函數具有不包含數據的跨度!)。請注意,P-splines 對於不均勻的結間距沒有多大意義。
線性外推用於需要外推的預測(即內部k-m[1]
結範圍之外的預測)。這種外推法在基礎構建中是不允許的,但在預測時是允許的。
對於 "ps"
基礎,可以在平滑規範對象中設置標誌,請求根據 Pya 和 Wood (2015) 的 SCOP-spline 單調平滑結構進行設置。到目前為止,mgcv
中的任何建模函數都不支持這一點(請參閱包scam
)。類似地,可以在平滑規範或平滑對象中設置 deriv
標誌,以便模型或預測矩陣生成所需的樣條曲線導數,而不是對其進行評估。請參閱下麵的示例。
值
類 "pspline.smooth"
或 "cp.smooth"
的對象。有關該對象將包含的元素,請參閱smooth.construct
。
例子
## see ?gam
## cyclic example ...
require(mgcv)
set.seed(6)
x <- sort(runif(200)*10)
z <- runif(200)
f <- sin(x*2*pi/10)+.5
y <- rpois(exp(f),exp(f))
## finished simulating data, now fit model...
b <- gam(y ~ s(x,bs="cp") + s(z,bs="ps"),family=poisson)
## example with supplied knot ranges for x and z (can do just one)
b <- gam(y ~ s(x,bs="cp") + s(z,bs="ps"),family=poisson,
knots=list(x=c(0,10),z=c(0,1)))
## example with supplied knots...
bk <- gam(y ~ s(x,bs="cp",k=12) + s(z,bs="ps",k=13),family=poisson,
knots=list(x=seq(0,10,length=13),z=(-3):13/10))
## plot results...
par(mfrow=c(2,2))
plot(b,select=1,shade=TRUE);lines(x,f-mean(f),col=2)
plot(b,select=2,shade=TRUE);lines(z,0*z,col=2)
plot(bk,select=1,shade=TRUE);lines(x,f-mean(f),col=2)
plot(bk,select=2,shade=TRUE);lines(z,0*z,col=2)
## Example using montonic constraints via the SCOP-spline
## construction, and of computng derivatives...
x <- seq(0,1,length=100); dat <- data.frame(x)
sspec <- s(x,bs="ps")
sspec$mono <- 1
sm <- smoothCon(sspec,dat)[[1]]
sm$deriv <- 1
Xd <- PredictMat(sm,dat)
## generate random coeffients in the unconstrainted
## parameterization...
b <- runif(10)*3-2.5
## exponentiate those parameters indicated by sm$g.index
## to obtain coefficients meeting the constraints...
b[sm$g.index] <- exp(b[sm$g.index])
## plot monotonic spline and its derivative
par(mfrow=c(2,2))
plot(x,sm$X%*%b,type="l",ylab="f(x)")
plot(x,Xd%*%b,type="l",ylab="f'(x)")
## repeat for decrease...
sspec$mono <- -1
sm1 <- smoothCon(sspec,dat)[[1]]
sm1$deriv <- 1
Xd1 <- PredictMat(sm1,dat)
plot(x,sm1$X%*%b,type="l",ylab="f(x)")
plot(x,Xd1%*%b,type="l",ylab="f'(x)")
## Now with sum to zero constraints as well...
sspec$mono <- 1
sm <- smoothCon(sspec,dat,absorb.cons=TRUE)[[1]]
sm$deriv <- 1
Xd <- PredictMat(sm,dat)
b <- b[-1] ## dropping first param
plot(x,sm$X%*%b,type="l",ylab="f(x)")
plot(x,Xd%*%b,type="l",ylab="f'(x)")
sspec$mono <- -1
sm1 <- smoothCon(sspec,dat,absorb.cons=TRUE)[[1]]
sm1$deriv <- 1
Xd1 <- PredictMat(sm1,dat)
plot(x,sm1$X%*%b,type="l",ylab="f(x)")
plot(x,Xd1%*%b,type="l",ylab="f'(x)")
作者
Simon N. Wood simon.wood@r-project.org
參考
Eilers, P.H.C. and B.D. Marx (1996) Flexible Smoothing with B-splines and Penalties. Statistical Science, 11(2):89-121
Pya, N., and Wood, S.N. (2015). Shape constrained additive models. Statistics and Computing, 25(3), 543-559.
也可以看看
相關用法
- 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.ad.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.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大神的英文原創作品 P-splines in GAMs。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。