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


R s 在 GAM 公式中定义平滑


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

说明

用于定义 gam 模型公式中的平滑项的函数。该函数不评估(样条)平滑 - 它的存在纯粹是为了帮助使用基于样条的平滑建立模型。

用法

s(..., k=-1,fx=FALSE,bs="tp",m=NA,by=NA,xt=NULL,id=NULL,sp=NULL,pc=NULL)

参数

...

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

k

用于表示平滑项的基维数。默认值取决于平滑函数的变量数量。 k 不应小于该项惩罚的零空间的维度(参见 null.space.dimension ),但如果是则将被重置。有关更多信息,请参阅choose.k

fx

指示该项是否是固定 d.f。回归样条线 ( TRUE ) 或惩罚回归样条线 ( FALSE )。

bs

两个字母的字符串,指示要使用的(惩罚)平滑基础。 (例如,"tp" 表示薄板回归样条线,"cr" 表示三次回归样条线)。请参阅smooth.terms 了解可用内容的概览。

m

该项的惩罚阶数(例如,当使用默认 t.p.r.s 基础时,具有二阶导数的正态三次样条惩罚为 2)。 NA 表示自动初始化。只有一些平滑的类使用这个。 "ps" 类可以使用 2 项数组分别给出基础和惩罚顺序。

by

与每个协变量具有相同维度的数值或因子变量。在数值向量的情况下,元素乘以平滑值,并在相应的协变量值处进行评估(“变化系数模型”结果)。对于数字 by 变量情况,生成的平滑通常不受居中约束(因此不应将 by variable 添加为额外的主效果)。在因子 by 变量的情况下,会为每个因子级别生成平滑的副本(这些平滑将居中,因此通常也需要添加该因子作为主效应)。有关更多详细信息,请参阅gam.models。如果协变量是矩阵,by 变量也可以是矩阵:在这种情况下实现平滑的线性函数(有关详细信息,请参阅 gam.modelslinear.functional.terms)。

xt

建立特定基础所需的任何额外信息。使用例如以 "tp" 为基础设置大数据集处理行为。如果 xt$sumConv 存在并且是 FALSE,则矩阵参数的求和约定将关闭。

id

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

sp

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

pc

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

细节

该函数不计算变量参数。要使用此函数来指定使用您自己的平滑,请注意输入和输出对象之间的关系,并参阅 smooth.construct 中的示例。

xx.smooth.spec 对象,其中 xxsbs 参数给出的基础标识代码。这些smooth.spec 对象定义平滑,并通过smooth.construct 方法函数转换为基数和惩罚。

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

term

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

bs.dim

用于表示平滑的基础尺寸。

fixed

如果该项被视为纯回归样条(具有固定自由度),则为 TRUE;如果将其视为惩罚回归样条则为 FALSE

dim

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

p.order

t.p.r.s 的顺序惩罚,或惩罚顺序的 auto-selection 为 0。

by

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

label

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

xt

作为参数传入的对象 xt

id

平滑的识别标签或编号,将其与其他平滑链接起来。默认为NULL,无链接。

sp

项的平滑参数数组(auto-estimation 为负值)。默认为 NULL

例子

# example utilising `by' variables
library(mgcv)
set.seed(0)
n<-200;sig2<-4
x1 <- runif(n, 0, 1);x2 <- runif(n, 0, 1);x3 <- runif(n, 0, 1)
fac<-c(rep(1,n/2),rep(2,n/2)) # create factor
fac.1<-rep(0,n)+(fac==1);fac.2<-1-fac.1 # and dummy variables
fac<-as.factor(fac)
f1 <-  exp(2 * x1) - 3.75887
f2 <-  0.2 * x1^11 * (10 * (1 - x1))^6 + 10 * (10 * x1)^3 * (1 - x1)^10
f<-f1*fac.1+f2*fac.2+x2
e <- rnorm(n, 0, sqrt(abs(sig2)))
y <- f + e
# NOTE: smooths will be centered, so need to include fac in model....
b<-gam(y~fac+s(x1,by=fac)+x2) 
plot(b,pages=1)

作者

Simon N. Wood simon.wood@r-project.org

参考

Wood, S.N. (2003) Thin plate regression splines. J.R.Statist.Soc.B 65(1):95-114

Wood S.N. (2017) Generalized Additive Models: An Introduction with R (2nd edition). Chapman and Hall/CRC Press.

https://www.maths.ed.ac.uk/~swood34/

也可以看看

te , gam , gamm

相关用法


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