te
位于 mgcv
包(package)。 说明
用于定义张量积平滑和 gam
模型公式中的交互的函数。 te
生成完整的张量积平滑,而 ti
生成张量积交互,适用于还存在主效应(以及任何较低的交互)的情况。
这些函数不评估平滑度 - 它们的存在纯粹是为了帮助使用基于张量积的平滑度建立模型。旨在从具有 basis-penalty 表示的任何边平滑构造张量积(限制是每个边平滑必须只有一个惩罚)。
用法
te(..., k=NA,bs="cr",m=NA,d=NA,by=NA,fx=FALSE,
np=TRUE,xt=NULL,id=NULL,sp=NULL,pc=NULL)
ti(..., k=NA,bs="cr",m=NA,d=NA,by=NA,fx=FALSE,
np=TRUE,xt=NULL,id=NULL,sp=NULL,mc=NULL,pc=NULL)
参数
... |
变量列表,这些变量是该平滑函数的协变量。此处最好避免形式取决于数据值的转换:例如 |
k |
用于表示平滑项的基数维度。如果未提供,则设置为 |
bs |
数组(或单个字符串)指定每个边际基础的类型。 |
m |
每个项的样条阶数及其惩罚(对于使用它的平滑类)。如果给出一个数字,则它用于所有术语。向量可用于为每个边距提供不同的 |
d |
边际基础维度数组。例如,如果您想要由 2 维 t.p.r.s. 的张量积组成的 3 个协变量的平滑。基和一维基,然后设置 |
by |
与每个协变量具有相同维度的数值或因子变量。在数值向量的情况下,元素乘以相应协变量值评估的平滑度(“变化系数模型”结果)。在因子情况下,会为每个因子级别生成平滑的副本。有关更多详细信息,请参阅 |
fx |
指示该项是否是固定 d.f。回归样条线 ( |
np |
|
xt |
或者是单个对象,提供要传递给每个边际基础构造函数的任何额外信息,或者是此类对象的列表,每个对象对应一个边际基础。 |
id |
标识该术语的标签或整数,以便将其平滑参数链接到相同类型的其他参数。如果两个或多个平滑项具有相同的 |
sp |
为此项提供的任何平滑参数。必须是与此平滑的惩罚数长度相同的数组。正或零元素被视为固定平滑参数。负元素表示自动初始化。将 |
mc |
对于 |
pc |
如果不是 |
细节
多个协变量的平滑可以根据用于表示一个(或有时多个)协变量的平滑的基数的张量积来构造。为此,使用关联的模型矩阵和惩罚矩阵生成 ‘marginal’ 基数,然后将它们以 tensor.prod.model.matrix
和 tensor.prod.penalties
中说明的方式组合,以生成用于平滑但多个惩罚的单个模型矩阵(一个对于每个边际基础)。整个平滑的基本尺寸是边平滑的基本尺寸的乘积。
张量积平滑对于表示以不同单位测量的协变量的函数特别有用,尽管它们通常不如 t.p.r.s. 表现得那么好。平滑缩放良好的协变量。
例如,研究具有 main-effects + 交互结构的平滑模型有时很有用
这种函数方差分析由 ti
项支持,这些项产生张量积相互作用,其中主效应已被排除,假设它们将被单独包含在内。例如~ ti(x) + ti(z) + ti(x,z)
将产生上述主效应+交互结构。这比尝试使用代表交互作用的 s
或 te
术语进行相同的操作要好得多(尽管 mgcv 并不禁止这样做)。从技术上讲,ti
术语非常简单:它们只是从已应用了可识别性约束(通常是sum-to-zero)的边际平滑构造张量积基:然后自动正确嵌套(与 GLM 框架中的所有交互一样)。参见 Wood(2017 年,第 5.6.3 节)。
“正常参数化”(np=TRUE
)重新参数化张量积平滑的边际平滑,以便参数是均匀分布在平滑协变量值范围内的一组点处的函数值。这意味着与任何特定协变量方向相关的张量积的惩罚可以解释为在该方向上应用的适当边平滑的惩罚并在平滑上进行平均。目前,这仅适用于单个变量的边际。当与 "cc"
、 "cr"
和 "cs"
之外的边平滑一起使用时,此参数化会降低数值稳定性:如果这会导致问题,请设置 np=FALSE
。
请注意,如果任何边际不需要居中,则张量积平滑不应居中(施加可识别性约束)。张量积平滑的构造函数确保了这种情况的发生。
该函数不计算变量参数。
值
类 tensor.smooth.spec
对象,定义张量积,平滑地由 smooth.construct.tensor.smooth.spec
函数转换为基础和惩罚。
返回的对象包含以下项目:
margin |
|
term |
文本字符串数组,给出该项作为函数的协变量的名称。 |
by |
是任何 |
fx |
逻辑数组,其中包含该项的每个惩罚的元素(张量积平滑有多个惩罚)。 |
label |
适合这个平滑术语的文本标签。 |
dim |
平滑器的维度 - 即它作为函数的协变量的数量。 |
mp |
|
np |
|
id |
提供给 |
sp |
提供给 |
inter |
|
mc |
提供给 |
例子
# following shows how tensor pruduct 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~te(x,z))
vis.gam(b2);title("tensor product")
b3 <- gam(y~ ti(x) + ti(z) + ti(x,z))
vis.gam(b3);title("tensor anova")
## now illustrate partial ANOVA decomp...
vis.gam(b3);title("full anova")
b4 <- gam(y~ ti(x) + ti(x,z,mc=c(0,1))) ## note z constrained!
vis.gam(b4);title("partial anova")
plot(b4)
par(old.par)
## now with a multivariate marginal....
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),rep(0,0)) ## example of list form of m
b <- gam(y~te(v,w,u,k=c(30,5),d=c(2,1),bs=c("ds","cr"),m=m))
plot(b)
作者
Simon N. Wood simon.wood@r-project.org
参考
Wood, S.N. (2006) Low rank scale invariant tensor product smooths for generalized additive mixed models. Biometrics 62(4):1025-1036 doi:10.1111/j.1541-0420.2006.00574.x
Wood S.N. (2017) Generalized Additive Models: An Introduction with R (2nd edition). Chapman and Hall/CRC Press. doi:10.1201/9781315370279
https://www.maths.ed.ac.uk/~swood34/
也可以看看
相关用法
- R tensor.prod.model.matrix 行克罗内克积/张量积平滑构造
- R t2 在 GAM 公式中定义替代张量积平滑
- R twlss Tweedie 位置规模家庭
- R trichol 三对角矩阵的 Choleski 分解
- R trind.generator 生成上三角存储的索引数组
- R totalPenaltySpace 获得零空间和罚矩阵范围的(正交)基
- R vcov.gam 从 GAM 拟合中提取参数(估计器)协方差矩阵
- R gam.check 拟合 gam 模型的一些诊断
- R null.space.dimension TPRS 未惩罚函数空间的基础
- R gam.reparam 寻找平方根惩罚的稳定正交重新参数化。
- R extract.lme.cov 从 lme 对象中提取数据协方差矩阵
- R scat 用于重尾数据的 GAM 缩放 t 系列
- R choldrop 删除并排名第一 Cholesky 因子更新
- R smooth.construct.cr.smooth.spec GAM 中的惩罚三次回归样条
- R bandchol 带对角矩阵的 Choleski 分解
- R gam.side GAM 的可识别性边条件
- R cox.ph 附加 Cox 比例风险模型
- R mgcv.parallel mgcv 中的并行计算。
- R gamm 广义加性混合模型
- R pdTens 实现张量积平滑的 pdMat 类的函数
- R Predict.matrix GAM 中平滑项的预测方法
- R Predict.matrix.soap.film 皂膜光滑度预测矩阵
- R smooth.construct.bs.smooth.spec GAM 中的惩罚 B 样条
- R gamlss.gH 计算回归系数的对数似然导数
- R plot.gam 默认 GAM 绘图
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Define tensor product smooths or tensor product interactions in GAM formulae。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。