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


R factor.smooth GAM 中平滑交互的因子


R语言 factor.smooth 位于 mgcv 包(package)。

说明

一个或多个因子与平滑效果的相互作用,会为每个因子水平产生单独的平滑效果。这些平滑可以具有不同的平滑参数,或者全部具有相同的平滑参数。有几种方法可以设置它们。

因子 by 变量。

如果平滑的 by 变量(使用 stetit2 指定)是一个因子,则为每个因子级别生成单独的平滑。如果因子是有序的,则不会为其第一个级别生成平滑:这对于设置具有参考级别平滑然后除第一个(参考)之外的每个因子级别的参考平滑差异的模型很有用。为平滑指定 id 会强制对因子的所有级别使用相同的平滑参数。例如, s(x,by=fac,id=1) 将为 fac 的每个级别生成单独的平滑 x ,每个平滑具有相同的平滑参数。有关更多信息,请参阅gam.models

总和为零平滑交互

bs="sz" 这些因子平滑交互是使用 s(...,bs="sz") 指定的。可能提供多个因子,并且为因子水平的每个组合生成平滑。平滑的构造是为了排除“主效应”平滑,或为因子水平的低阶组合产生的单个平滑的影响。例如,对于单个因子,不同因子级别的平滑受到很大限制,以致等效样条系数的所有因子级别的总和均为零。这允许有意义且可识别的模型构建,其中主效应平滑加上每个因子水平与主效应之间差异的平滑。这种构造通常比具有有序因子构造的 by 变量更自然。请参阅smooth.construct.sz.smooth.spec

随机摆动曲线

bs="fs" 此方法为单个因子的每个水平生成一条平滑曲线,将曲线视为完全随机的。这意味着原则上可以使用主效应加上因子水平平滑偏离该效应来构建模型。但是,模型不会像 "sz" 方法那样强制让主效应完成尽可能多的工作。这种方法对于 gamm 来说非常有效,因为它利用了 lme 中可用的嵌套估计。请参阅smooth.construct.fs.smooth.spec

例子

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)

bd <- bam(y~s(x0)+ s(x1) + s(x1,fac,bs="sz",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.

也可以看看

smooth.construct.fs.smooth.spec , smooth.construct.sz.smooth.spec

相关用法


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