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


R t2 在 GAM 公式中定义替代张量积平滑


R语言 t2 位于 mgcv 包(package)。

说明

用于在 gam 公式中定义张量积平滑的 te 的替代方案。结果是惩罚是单位矩阵的非重叠倍数(某些行和列归零)的结构。该构造源自 Fabian Scheipl(mgcv 实现,2010 年),类似于平滑样条方差分析(Gu,2002 年),但使用低秩惩罚回归样条边际。这种结构的主要优点是它可以与 gamm4 包中的 gamm4 一起使用。

用法

t2(..., k=NA,bs="cr",m=NA,d=NA,by=NA,xt=NULL,
               id=NULL,sp=NULL,full=FALSE,ord=NULL,pc=NULL)

参数

...

变量列表,这些变量是该平滑函数的协变量。此处最好避免形式取决于数据值的转换:例如t2(log(x),z) 可以,但 t2(I(x/sd(x)),z) 不行(请参阅 predict.gam )。

k

用于表示平滑项的基数维度。如果未提供,则设置为 5^d 。如果作为单个数字提供,则该基本尺寸将用于每个基础。如果作为数组提供,则元素是张量积的分量(边)基的维度。有关更多信息,请参阅choose.k

bs

数组(或单个字符串)指定每个边际基础的类型。 "cr" 用于三次回归样条; "cs" 用于具有收缩的三次回归样条; "cc" 用于周期性/循环三次回归样条; "tp" 用于薄板回归样条; "ts" 用于 t.p.r.s.具有额外的收缩。有关详细信息和完整列表,请参阅smooth.terms。此处也可以使用用户定义的基数(有关示例,请参阅smooth.construct)。如果仅给出一个碱基代码,则该代码将用于所有碱基。

m

每个项的样条阶数及其惩罚(对于使用它的平滑类)。如果给出一个数字,则它用于所有术语。向量可用于为每个边距提供不同的m。对于采用向量 m 的边距(例如 p.splineDuchon.spline ),则可以提供一个列表,其中每个边距有一个向量元素。 NA 自动初始化。 m 被某些碱基忽略(例如 "cr" )。

d

边际基础维度数组。例如,如果您想要由 2 维 t.p.r.s. 的张量积组成的 3 个协变量的平滑。基和一维基,然后设置 d=c(2,1) 。内置基础类型和尺寸之间的不兼容性将通过重置基础类型来解决。

by

与每个协变量具有相同维度的数值或因子变量。在数值向量的情况下,元素乘以相应协变量值评估的平滑度(“变化系数模型”结果)。在因子情况下,会为每个因子级别生成平滑的副本。有关更多详细信息,请参阅gam.models。如果协变量是矩阵,也可能是矩阵:在这种情况下实现平滑的线性函数(有关详细信息,请参阅gam.modelslinear.functional.terms)。

xt

或者是单个对象,提供要传递给每个边际基础构造函数的任何额外信息,或者是此类对象的列表,每个对象对应一个边际基础。

id

标识该术语的标签或整数,以便将其平滑参数链接到相同类型的其他参数。如果两个或多个平滑项具有相同的 id,那么它们将具有相同的平滑参数,并且默认情况下具有相同的基数(第一次出现定义基本类型,但来自基础构造中使用的所有术语的数据)。

sp

为此项提供的任何平滑参数。必须是与此平滑的惩罚数长度相同的数组。正或零元素被视为固定平滑参数。负元素表示自动初始化。将 sp 参数中提供的值覆盖为 gam 。被 gamm 忽略。

full

如果TRUE,则空空间列和范围空间的每个组合都有单独的惩罚。这给出了严格的不变性。如果FALSE 零空间和范围空间的每种组合都会产生一个惩罚,但每个零空间基的列都被视为一组。后者更为简约,但确实意味着不变性只能通过零空间基向量的任意重新缩放来实现。

ord

给出要保留的项顺序的数组。这里的顺序是指构建组件时使用的边范围空间的数量。 NULL 保留一切。

pc

如果不是 NULL ,则表示点约束:平滑应在此处给出的点处通过零(作为名称与平滑名称相对应的向量或列表)。如果提供,切勿忽略。请参阅identifiability

细节

多个协变量的平滑可以根据用于表示一个(或有时多个)协变量的平滑的基数的张量积来构造。为此,使用关联的模型矩阵和惩罚矩阵生成‘marginal’ 碱基。这些被重新参数化,以便惩罚在所有地方都为零,除了前导对角线上的一些元素之外,它们都具有相同的非零值。对于每个边际基础,这种重新参数化会产生未惩罚和惩罚的参数子集(详细信息请参见 Wood,2004 年的附录)。

然后将重新参数化的边际基数组合起来,生成所有协变量的单个函数的基数(维度由边际基数的维度的乘积给出)。在这个设置中,有多个惩罚矩阵 - 全部为零,但对于前导对角线上的常量和零的混合。没有两个处罚在同一位置有非零条目。

本质上,张量积的基础可以被认为是由边平滑的惩罚(范围)或未惩罚(零)空间基的一组乘积构造而成(参见 Gu,2002,第 2.4 节)。要构造其中一个集合,请从每个边际选择零空间或范围空间,然后从这些基构造乘积基。结果会受到山脊惩罚(除非它恰好是完全边零空间的乘积)。平滑的整个基础是由可以以这种方式构建的所有不同的产品基础构建的。平滑基础的单独惩罚分量各自具有方差分析(术语分解)方面的解释。有关更多信息,请参阅pen.edf

请注意,有两种构建产品的方法。当 full=FALSE 时,空空间基数将被视为每个产品中的整体,但当 full=TRUE 时,每个空空间列将被视为单独的空空间。后者会导致更多处罚,但与 SS-ANOVA 方法严格类似。

张量积平滑对于表示以不同单位测量的协变量的函数特别有用,尽管它们通常不如 t.p.r.s. 表现得那么好。平滑缩放良好的协变量。

另请注意,如果在两种情况下使用相同的边际基数,则由较低阶张量积平滑构造的 GAM 会嵌套在由较高阶张量积平滑构造的 GAM 中(边际平滑本身只是张量积平滑的特殊情况。)

请注意,如果任何边际不需要居中,则张量积平滑不应居中(施加可识别性约束)。张量积平滑的构造函数确保了这种情况的发生。

该函数不计算变量参数。

t2.smooth.spec 对象,定义张量积,平滑地由 smooth.construct.tensor.smooth.spec 函数转换为基础和惩罚。

返回的对象包含以下项目:

margin

s 返回类型的 smooth.spec 对象列表,定义构造张量积 smooth 的基础。

term

文本字符串数组,给出该项作为函数的协变量的名称。

by

是任何 by 文本变量的名称("NA" 没有)。

fx

逻辑数组,其中包含该项的每个惩罚的元素(张量积平滑有多个惩罚)。 TRUE 如果要忽略惩罚,则 FALSE ,否则。

label

适合这个平滑术语的文本标签。

dim

平滑器的维度 - 即它作为函数的协变量的数量。

mp

TRUE 是要使用的多重惩罚(默认)。

np

TRUE 根据函数值重新参数化一维边平滑(默认)。

id

提供给 teid 参数。

sp

提供给 tesp 参数。

例子


# following shows how tensor product deals nicely with 
# badly scaled covariates (range of x 5% of range of z )
require(mgcv)
test1<-function(x,z,sx=0.3,sz=0.4)  
{ x<-x*20
  (pi**sx*sz)*(1.2*exp(-(x-0.2)^2/sx^2-(z-0.3)^2/sz^2)+
  0.8*exp(-(x-0.7)^2/sx^2-(z-0.8)^2/sz^2))
}
n<-500
old.par<-par(mfrow=c(2,2))
x<-runif(n)/20;z<-runif(n);
xs<-seq(0,1,length=30)/20;zs<-seq(0,1,length=30)
pr<-data.frame(x=rep(xs,30),z=rep(zs,rep(30,30)))
truth<-matrix(test1(pr$x,pr$z),30,30)
f <- test1(x,z)
y <- f + rnorm(n)*0.2
b1<-gam(y~s(x,z))
persp(xs,zs,truth);title("truth")
vis.gam(b1);title("t.p.r.s")
b2<-gam(y~t2(x,z))
vis.gam(b2);title("tensor product")
b3<-gam(y~t2(x,z,bs=c("tp","tp")))
vis.gam(b3);title("tensor product")
par(old.par)

test2<-function(u,v,w,sv=0.3,sw=0.4)  
{ ((pi**sv*sw)*(1.2*exp(-(v-0.2)^2/sv^2-(w-0.3)^2/sw^2)+
  0.8*exp(-(v-0.7)^2/sv^2-(w-0.8)^2/sw^2)))*(u-0.5)^2*20
}
n <- 500
v <- runif(n);w<-runif(n);u<-runif(n)
f <- test2(u,v,w)
y <- f + rnorm(n)*0.2

## tensor product of 2D Duchon spline and 1D cr spline
m <- list(c(1,.5),0)
b <- gam(y~t2(v,w,u,k=c(30,5),d=c(2,1),bs=c("ds","cr"),m=m))

## look at the edf per penalty. "rr" denotes interaction term 
## (range space range space). "rn" is interaction of null space
## for u with range space for v,w...
pen.edf(b) 

## plot results...
op <- par(mfrow=c(2,2))
vis.gam(b,cond=list(u=0),color="heat",zlim=c(-0.2,3.5))
vis.gam(b,cond=list(u=.33),color="heat",zlim=c(-0.2,3.5))
vis.gam(b,cond=list(u=.67),color="heat",zlim=c(-0.2,3.5))
vis.gam(b,cond=list(u=1),color="heat",zlim=c(-0.2,3.5))
par(op)

b <- gam(y~t2(v,w,u,k=c(25,5),d=c(2,1),bs=c("tp","cr"),full=TRUE),
         method="ML")
## more penalties now. numbers in labels like "r1" indicate which 
## basis function of a null space is involved in the term. 
pen.edf(b) 

作者

Simon N. Wood simon.wood@r-project.org and Fabian Scheipl

参考

Wood S.N., F. Scheipl and J.J. Faraway (2013, online Feb 2012) Straightforward intermediate rank tensor product smoothing in mixed models. Statistics and Computing. 23(3):341-360 doi:10.1007/s11222-012-9314-z

Gu, C. (2002) Smoothing Spline ANOVA, Springer.

Alternative approaches to functional ANOVA decompositions, *not* implemented by t2 terms, are discussed in:

Belitz and Lang (2008) Simultaneous selection of variables and smoothing parameters in structured additive regression models. Computational Statistics & Data Analysis, 53(1):61-81

Lee, D-J and M. Durban (2011) P-spline ANOVA type interaction models for spatio-temporal smoothing. Statistical Modelling, 11:49-69

Wood, S.N. (2006) Low-Rank Scale-Invariant Tensor Product Smooths for Generalized Additive Mixed Models. Biometrics 62(4): 1025-1036.

也可以看看

te s , gam , gamm ,

相关用法


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