当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R smooth.construct.ds.smooth.spec 低阶 Duchon 1977 样条


R语言 smooth.construct.ds.smooth.spec 位于 mgcv 包(package)。

说明

薄板样条平滑器是 Duchon (1977) 中讨论的各向同性样条的一个特例。这个更通用类的子集可以通过 gam 模型公式中的 s(x,z,bs="ds",m=c(1,.5) 等术语来调用。在 Duchon (1977) 的表示法中,m 由 m[1] 给出(默认值 2),而 s 由 m[2] 给出(默认值 0)。

Duchon (1977) 的构造将通常的薄板样条惩罚概括如下。通常的 TPS 惩罚是由函数 w.r.t. 的混合偏 m 阶导数向量的欧几里德范数平方的积分给出的。它的论点。 Duchon 在傅里叶域中重新表达该惩罚,然后通过傅里叶频率的欧几里得范数对积分中的平方范数进行加权,并提高到 2s 次方。 s 是用户选择的常量,取整数值除以 2。如果 d 是平滑参数的数量,则要求 -d/2 < s < d/2。为了获得连续函数,我们进一步要求 m + s > d/2。如果 s=0,则恢复通常的薄板样条。

该构造完全符合 Wood (2003) 中针对薄板样条给出的低阶近似方法,具有类似的最优性属性,因此这里使用这种低阶平滑方法。对于大型数据集,此处采用与tprs 情况中使用的相同的子采样方法来降低计算成本。

这些平滑器允许在惩罚中使用比传统薄板样条更低阶的导数,同时仍然产生连续函数。例如,我们可以设置 m = 1 和 s = d/2 - .5,以便对任何 d 使用一阶导数惩罚(其优点是未惩罚函数的零空间维数仅为 d+1)。

用法

## S3 method for class 'ds.smooth.spec'
smooth.construct(object, data, knots)
## S3 method for class 'duchon.spline'
Predict.matrix(object, data)

参数

object

平滑的规范对象,通常由术语 s(...,bs="ds",...) 生成。

data

仅包含该术语所需的数据(包括任何 by 变量)的列表,其名称对应于 object$term (和 object$by )。 by 变量是最后一个元素。

knots

包含为基础设置提供的任何结的列表 - 与 data 具有相同的顺序和相同的名称。可以是NULL

细节

此类的默认基本维度是 k=M+k.def,其中 M 是零空间维度(未惩罚函数空间的维度),k.def 对于维度 1 为 10,对于维度 2 为 30,对于更高维度为 100。这本质上是任意的,应该进行检查,但与所有惩罚回归平滑器一样,结果在统计上对确切的选择不敏感,只要它不是小到强制过度平滑(平滑器的自由度主要由其平滑参数控制) )。

构造函数通常不直接调用,而是由 gam 在内部使用。要用于基础设置,建议使用 smooth.construct2

对于这些类,规范 object 将包含有关如何在其 xt 字段中处理大型数据集的信息。默认情况下,如果唯一预测变量组合的数量超过 2000,则对 2000 ‘knots’ 进行随机子采样,从中生成完整基础的降级特征值近似。默认值可以通过 xt 参数修改为 s 。它作为一个列表提供,其中包含元素 max.knotsseed,其中包含用于代替 2000 的数字,以及要使用的随机数种子(两者都可以缺失)。请注意,随机采样不会影响 R 的 RNG 的状态。

对于这些基础 knots 有两个用途。首先,如前所述,对于大型数据集,tp 基础的计算可能非常耗时。用户可以通过提供一组精简的协变量值来保留该方法的大部分优点,从中获取基础 - 通常使用的协变量值的数量将大大小于数据的数量,并且远大于基础维度,k。如果唯一协变量值(组合)的数量超过 max.knots ,则自动采用此方法。第二种可能性是避免用于完全查找样条基础的特征分解,而仅使用所选结隐含的基础:如果提供的结数量与基础尺寸 k 匹配,就会发生这种情况。对于给定的基本尺寸,第二个选项速度更快,但结果较差(用户在选择结位置时必须非常小心)。

"duchon.spline" 的对象。除了 smooth.construct 下记录的平滑类的常见元素之外,该对象还将包含:

shift

应用于每个协变量的移位记录,以便将其以零为中心,并避免在该项的惩罚零空间基础中可能发生的任何 co-linearity 问题。

Xu

此平滑的唯一协变量组合的矩阵(通过首先删除重复位置来构建基础)。

UZ

将平滑参数映射回完整 Duchon 样条参数的矩阵。

null.space.dimension

根据此项的摆动惩罚,摆动为零的函数空间的维数。

例子

require(mgcv)
eg <- gamSim(2,n=200,scale=.05)
attach(eg)
op <- par(mfrow=c(2,2),mar=c(4,4,1,1))
b0 <- gam(y~s(x,z,bs="ds",m=c(2,0),k=50),data=data)  ## tps
b <- gam(y~s(x,z,bs="ds",m=c(1,.5),k=50),data=data)  ## first deriv penalty
b1 <- gam(y~s(x,z,bs="ds",m=c(2,.5),k=50),data=data) ## modified 2nd deriv

persp(truth$x,truth$z,truth$f,theta=30) ## truth
vis.gam(b0,theta=30)
vis.gam(b,theta=30)
vis.gam(b1,theta=30)

detach(eg)

作者

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

参考

Duchon, J. (1977) Splines minimizing rotation-invariant semi-norms in Solobev spaces. in W. Shemp and K. Zeller (eds) Construction theory of functions of several variables, 85-100, Springer, Berlin.

Wood, S.N. (2003) Thin plate regression splines. J.R.Statist.Soc.B 65(1):95-114

也可以看看

Spherical.Spline

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Low rank Duchon 1977 splines。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。