smooth.construct.fs.smooth.spec
位于 mgcv
包(package)。 说明
简单因子平滑交互,与 gamm
一起使用时非常有效。此平滑类允许对因子的每个级别进行单独的平滑,并且所有平滑具有相同的平滑参数。它是使用因子 by
变量的替代方法。
有关因子平滑交互的更通用替代方案,请参阅factor.smooth
(包括张量积平滑与因子的交互)。
用法
## S3 method for class 'fs.smooth.spec'
smooth.construct(object, data, knots)
## S3 method for class 'fs.interaction'
Predict.matrix(object, data)
参数
object |
对于 |
data |
仅包含该术语所需的数据(包括任何 |
knots |
包含为顺利基础设置提供的任何结的列表。 |
细节
此类为单因子变量的每个级别生成平滑。在 gam
公式中,这是通过类似 s(x,fac,bs="fs")
来完成的,它几乎相当于 s(x,by=fac,id=1)
(使用 gam
参数 select=TRUE
)。这些项受到完全惩罚,每个零空间分量都有单独的惩罚:因此它们不居中(无sum-to-zero约束)。
该类对于与 gamm
一起使用特别有用,其中估计有效地利用了因子内平滑的嵌套。但请注意: i) gamm
只允许一个平滑条件因子,因此 s(x)+s(z,fac,bs="fs")+s(v,fac,bs="fs")
可以,但 s(x)+s(z,fac1,bs="fs")+s(v,fac2,bs="fs")
则不行; ii) 所有附加随机效应和相关结构将被视为嵌套在平滑因子交互作用的因子内。为了促进这一点,从 gamm
调用构造函数,并将属性 "gamm"
附加到平滑规范对象。结果与不这样做的情况不同。
请注意,gamm4
包中的 gamm4
不受适用于 gamm
的任何限制,并且 "fs"
术语可以在没有 side-effects 的情况下使用。仍然使用具有 "gamm"
属性的平滑规范对象来调用构造函数。
任何单一惩罚基础都可以用于在每个因子水平上进行平滑。默认值为 "tp"
,但可以在 s
的 xt
参数中提供替代方案(例如 s(x,fac,bs="fs",xt="cr")
或 s(x,fac,bs="fs",xt=list(bs="cr")
)。 s(...,bs="fs")
的 k
参数是指用于因子变量每个级别的基本维度。
请注意一个计算瓶颈:当前 gamm
(或 gamm4
)将为平滑结果生成完整的后验协方差矩阵,包括因子每个级别的平滑结果。如果因子的级别超过数百个,则该矩阵可能会变得很大且计算成本高昂。即使是一两百级,也应该注意保留k
。
此类的绘图方法有两种方案。 scheme==0
是彩色的,而 scheme==1
是黑白的。
值
类 "fs.interaction"
的对象或将因子平滑交互的系数映射到平滑本身的矩阵。 "fs.interaction"
对象的内容取决于是否使用具有属性 gamm
的对象调用 smooth.construct
:请参见下文。
例子
library(mgcv)
set.seed(0)
## simulate data...
f0 <- function(x) 2 * sin(pi * x)
f1 <- function(x,a=2,b=-1) exp(a * x)+b
f2 <- function(x) 0.2 * x^11 * (10 * (1 - x))^6 + 10 *
(10 * x)^3 * (1 - x)^10
n <- 500;nf <- 25
fac <- sample(1:nf,n,replace=TRUE)
x0 <- runif(n);x1 <- runif(n);x2 <- runif(n)
a <- rnorm(nf)*.2 + 2;b <- rnorm(nf)*.5
f <- f0(x0) + f1(x1,a[fac],b[fac]) + f2(x2)
fac <- factor(fac)
y <- f + rnorm(n)*2
## so response depends on global smooths of x0 and
## x2, and a smooth of x1 for each level of fac.
## fit model...
bm <- gamm(y~s(x0)+ s(x1,fac,bs="fs",k=5)+s(x2,k=20))
plot(bm$gam,pages=1)
summary(bm$gam)
## Also efficient using bam(..., discrete=TRUE)
bd <- bam(y~s(x0)+ s(x1,fac,bs="fs",k=5)+s(x2,k=20),discrete=TRUE)
plot(bd,pages=1)
summary(bd)
## Could also use...
## b <- gam(y~s(x0)+ s(x1,fac,bs="fs",k=5)+s(x2,k=20),method="ML")
## ... but its slower (increasingly so with increasing nf)
## b <- gam(y~s(x0)+ t2(x1,fac,bs=c("tp","re"),k=5,full=TRUE)+
## s(x2,k=20),method="ML"))
## ... is exactly equivalent.
作者
Simon N. Wood simon.wood@r-project.org with input from Matteo Fasiolo.
也可以看看
相关用法
- 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.ps.smooth.spec GAM 中的 P 样条
- 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大神的英文原创作品 Factor smooth interactions in GAMs。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。