當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。