smooth.construct.tp.smooth.spec
位于 mgcv
包(package)。 说明
gam
可以使用任意数量变量的各向同性平滑,通过 s(x,z,bs="tp",m=3)
等术语指定(或只是 s(x,z)
,因为这是默认基础)。这些术语基于薄板回归样条。 m
指定薄板样条罚分中导数的阶数。
如果 m
是长度为 2 的向量且第二个元素为零,则平滑的惩罚零空间不包含在平滑中:如果您需要测试平滑是否可以用线性项替换,这很有用,或构建具有奇怪嵌套结构的模型。
薄板回归样条的构造方法是从完整薄板样条的基础和惩罚开始,然后以最佳方式截断该基础,以获得低阶平滑器。 Wood (2003) 中给出了详细信息。该方法的一个关键优点是它避免了传统回归样条建模的结点放置问题,但它还具有以下优点:较低阶的平滑嵌套在较高阶的平滑中,因此使用传统的假设检验方法是合法的比较基于纯回归样条的模型。请注意,基础截断不会改变薄板样条惩罚的含义(它的惩罚与完整薄板样条的惩罚完全相同)。
t.p.r.s.对于大型数据集,计算基础和惩罚可能会变得昂贵。因此,默认行为是,如果有多个 max.knots
的唯一数据位置,则对 max.knots
唯一数据位置进行随机子采样,并使用子样本进行基础构建。采样始终使用相同的随机种子进行,以确保可重复性(不重置 R RNG)。默认情况下,max.knots
为 2000。种子和 max.knots
都可以使用 s
的 xt
参数进行修改。或者,用户可以提供用来构建基础的结。
"ts"
平滑是 t.p.r.s.修改惩罚,以便对于足够高的平滑参数,该项收缩到零,而不是收缩到惩罚零空间中的函数(参见详细信息)。
用法
## S3 method for class 'tp.smooth.spec'
smooth.construct(object, data, knots)
## S3 method for class 'ts.smooth.spec'
smooth.construct(object, data, knots)
参数
object |
平滑规范对象,通常由术语 |
data |
仅包含该术语所需的数据(包括任何 |
knots |
包含为基础设置提供的任何结的列表 - 与 |
细节
此类的默认基本维度是 k=M+k.def
,其中 M
是零空间维度(未惩罚函数空间的维度),k.def
对于维度 1 为 8,对于维度 2 为 27,对于更高维度为 100。这本质上是任意的,应该进行检查,但与所有惩罚回归平滑器一样,结果在统计上对确切的选择不敏感,只要它不是小到强制过度平滑(平滑器的自由度主要由其平滑参数控制) )。
默认设置是将m
(薄板样条罚分中的导数阶数)设置为满足2m > d+1
的最小值,其中d
如果项的协变量数量:这会产生“视觉上平滑”的函数。无论如何,2m>d
必须满足。
构造函数通常不直接调用,而是由 gam
在内部使用。要用于基础设置,建议使用 smooth.construct2
。
对于这些类,规范 object
将包含有关如何在其 xt
字段中处理大型数据集的信息。如果唯一预测变量组合的数量超过 2000,默认值是对 2000 ‘knots’ 进行随机子采样,从中生成 tprs 基础。默认值可以通过 s
的 xt
参数进行修改。它作为一个列表提供,其中包含元素 max.knots
和 seed
,其中包含用于代替 2000 的数字,以及要使用的随机数种子(两者都可以缺失)。
对于这些基础 knots
有两个用途。首先,如前所述,对于大型数据集,tp
基础的计算可能非常耗时。用户可以保留 t.p.r.s 的大部分优点。通过提供一组缩减的协变量值来获取基础的方法 - 通常使用的协变量值的数量将大大小于数据的数量,并且大大大于基础维度 k
。如果唯一协变量值(组合)的数量超过 max.knots
,则自动采用此方法。第二种可能性是避免用于查找 t.p.r.s 的特征分解。完全基础并简单地使用所选结隐含的基础:如果提供的结数量与基础尺寸 k
匹配,就会发生这种情况。对于给定的基本尺寸,第二个选项速度更快,但结果较差(用户在选择结位置时必须非常小心)。
平滑的收缩版本,eigen-decomposes 摆动惩罚矩阵,并将其零特征值设置为最小严格正特征值的小倍数。然后将惩罚设置为矩阵,其特征向量与原始惩罚的特征向量相对应,但特征值设置为扰动版本。该惩罚矩阵具有满秩,并且在足够高的平滑参数下将曲线收缩到零。
值
类 "tprs.smooth"
或 "ts.smooth"
的对象。除了 smooth.construct
下记录的平滑类的常见元素之外,该对象还将包含:
shift |
应用于每个协变量的移位记录,以便将其以零为中心,并避免在该项的惩罚零空间基础中可能发生的任何 co-linearity 问题。 |
Xu |
此平滑的唯一协变量组合的矩阵(通过首先删除重复位置来构建基础)。 |
UZ |
映射 t.p.r.s 的矩阵参数返回完整薄板样条的参数。 |
null.space.dimension |
根据此项的摆动惩罚,摆动为零的函数空间的维数。 |
例子
require(mgcv); n <- 100; set.seed(2)
x <- runif(n); y <- x + x^2*.2 + rnorm(n) *.1
## is smooth significantly different from straight line?
summary(gam(y~s(x,m=c(2,0))+x,method="REML")) ## not quite
## is smooth significatly different from zero?
summary(gam(y~s(x),method="REML")) ## yes!
## Fool bam(...,discrete=TRUE) into (strange) nested
## model fit...
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2)
dat$x1a <- dat$x1 ## copy x1 so bam allows 2 copies of x1
## Following removes identifiability problem, by removing
## linear terms from second smooth, and then re-inserting
## the one that was not a duplicate (x2)...
b <- bam(y~s(x0,x1)+s(x1a,x2,m=c(2,0))+x2,data=dat,discrete=TRUE)
## example of knot based tprs...
k <- 10; m <- 2
y <- y[order(x)];x <- x[order(x)]
b <- gam(y~s(x,k=k,m=m),method="REML",
knots=list(x=seq(0,1,length=k)))
X <- model.matrix(b)
par(mfrow=c(1,2))
plot(x,X[,1],ylim=range(X),type="l")
for (i in 2:ncol(X)) lines(x,X[,i],col=i)
## compare with eigen based (default)
b1 <- gam(y~s(x,k=k,m=m),method="REML")
X1 <- model.matrix(b1)
plot(x,X1[,1],ylim=range(X1),type="l")
for (i in 2:ncol(X1)) lines(x,X1[,i],col=i)
## see ?gam
作者
Simon N. Wood simon.wood@r-project.org
参考
Wood, S.N. (2003) Thin plate regression splines. J.R.Statist.Soc.B 65(1):95-114
相关用法
- R smooth.construct.tensor.smooth.spec 张量积平滑构造函数
- R smooth.construct.t2.smooth.spec 张量积平滑构造函数
- 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.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.ps.smooth.spec GAM 中的 P 样条
- R smooth.construct.sos.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大神的英文原创作品 Penalized thin plate regression splines in GAMs。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。