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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。