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


R gam 具有集成平滑度估计的广义加性模型


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

说明

将广义加性模型 (GAM) 与数据进行拟合,术语“GAM”包括任何二次惩罚 GLM 以及通过二次惩罚似然类型方法估计的各种其他模型(请参阅 family.mgcv )。模型项的平滑程度作为拟合的一部分进行估计。 gam 还可以拟合任何受到多重二次惩罚(包括惩罚程度的估计)的 GLM。对于使用拟合模型预测的任何数量,可以轻松获得置信/可信区间。

平滑项使用惩罚回归样条线(或类似的平滑器)以及由 GCV/UBRE/AIC/REML/NCV 选择的平滑参数或具有固定自由度的回归样条线(允许两者混合)来表示。多维平滑可使用惩罚薄板回归样条(各向同性)或张量积样条(当各向同性平滑不合适时),并且用户可以添加平滑。平滑的线性泛函也可以包含在模型中。有关可用平滑的概述,请参阅smooth.terms。有关指定模型的更多信息,请参阅 gam.modelsrandom.effectslinear.functional.terms 。有关模型选择的更多信息,请参阅gam.selection。请阅读 gam.checkchoose.k

请参阅包 gam ,了解通过原始 Hastie 和 Tibshirani 方法实现的 GAM(有关此实现的差异,请参阅详细信息)。

对于非常大的数据集,请参阅 bam ,对于混合 GAM,请参阅 gammrandom.effects

用法


gam(formula,family=gaussian(),data=list(),weights=NULL,subset=NULL,
    na.action,offset=NULL,method="GCV.Cp",
    optimizer=c("outer","newton"),control=list(),scale=0,
    select=FALSE,knots=NULL,sp=NULL,min.sp=NULL,H=NULL,gamma=1,
    fit=TRUE,paraPen=NULL,G=NULL,in.out,drop.unused.levels=TRUE,
    drop.intercept=NULL,nei=NULL,discrete=FALSE,...)

参数

formula

GAM 公式或公式列表(请参阅 formula.gamgam.models )。这些与 GLM 的公式完全相同,只是可以将平滑项 stetit2 添加到右侧以指定线性预测器依赖于预测器的平滑函数(或这些的线性泛函)。

family

这是一个族对象,指定在拟合等中使用的分布和链接(请参阅 glmfamily )。有关可用函数的完整列表,请参阅family.mgcv,该列表远远超出了指数系列。请注意,如果 method 设置为 RE/ML 方法,则 quasi 系列实际上会导致使用扩展的 quasi-likelihood(McCullagh 和 Nelder,1989,9.6)。

data

包含模型响应变量和公式所需的协变量的 DataFrame 或列表。默认情况下,变量取自 environment(formula) :通常是调用 gam 的环境。

weights

数据对对数似然贡献的先验权重。请注意,例如,权重 2 相当于对完全相同的观察进行两次。如果您想重新加权每个数据的贡献而不改变对数似然的总体大小,那么您应该对权重进行归一化(例如 weights <- weights/mean(weights) )。

subset

一个可选向量,指定要在拟合过程中使用的观测子集。

na.action

一个函数,指示当数据包含“NA”时应该发生什么。默认值由 ‘options’ 的“na.action”设置设置,如果未设置,则为“na.fail”。 “factory-fresh” 默认为“na.omit”。

offset

可用于提供模型偏移以用于拟合。请注意,在预测时,此偏移量将始终被完全忽略,这与 formula 中包含的偏移量不同(这用于符合 lmglm 的行为)。

control

用于替换 gam.control 返回的默认值的拟合控制参数列表。未设置的值采用默认值。

method

平滑参数估计方法。 "GCV.Cp" 对于未知尺度参数使用 GCV,对于已知尺度使用 Mallows' Cp/UBRE/AIC。 "GACV.Cp" 等效,但使用 GACV 代替 GCV。 "NCV" 使用 nei 指定的邻域结构进行邻域交叉验证("QNCV" 表示数值上更稳定的版本)。 "REML" 用于 REML 估计,包括未知尺度,"P-REML" 用于 REML 估计,但使用 Pearson 尺度估计。 "ML""P-ML" 类似,但使用最大似然代替 REML。超出指数族 "REML" 是默认值,唯一的其他选项是 "ML""NCV""QNCV"

optimizer

指定用于优化平滑参数估计标准的数值优化方法的数组(由 method 给出)。 "outer" 用于直接嵌套优化方法。 "outer" 可以使用多个替代优化器,在 optimizer 的第二个元素中指定:"newton"(默认)、"bfgs""optim""nlm""efs" 用于 Wood 和 Fasiolo (2017) 的扩展 Fellner Schall 方法。

scale

如果这是正数,则将其视为已知的尺度参数。负值表示尺度参数未知。 0 表示泊松和二项式的尺度参数为 1,否则未知。请注意,对于泊松和二项式情况,(RE)ML 方法只能使用尺度参数 1。

select

如果这是TRUE,那么gam可以为每一项添加额外的惩罚,以便可以将其惩罚为零。这意味着作为拟合一部分的平滑参数估计可以完全从模型中删除项。如果相应的平滑参数估计为零,则额外的惩罚不起作用。使用gamma 提高惩罚级别。

knots

这是一个可选列表,包含用户指定的用于基础构造的结值。对于大多数底座,用户只需提供要使用的结,该结必须与提供的 k 值匹配(请注意,结的数量并不总是只是 k )。请参阅 tprs 了解 "tp"/"ts" 情况下发生的情况。不同的项可以使用不同数量的结,除非它们共享协变量。

sp

此处可以提供平滑参数向量。必须按照平滑项在模型公式中出现的顺序提供平滑参数。负元素表示应该估计参数,因此固定参数和估计参数的混合是可能的。如果平滑共享平滑参数,则 length(sp) 必须对应于底层平滑参数的数量。

min.sp

可以为平滑参数提供下限。请注意,如果使用此选项,则返回对象中的平滑参数 full.sp 需要添加到此处提供的内容中,以获得实际乘以惩罚的平滑参数。 length(min.sp) 应始终与惩罚总数相同(因此,如果平滑共享平滑参数,它可能比 sp 长)。

H

可以提供用户对 GAM 参数提供的固定二次罚分,并将其作为其系数矩阵。该术语的常见用法是在模型在线性预测器尺度上接近 un-identifiable 但在响应尺度上完美定义的情况下,向 GAM 参数添加岭罚分。

gamma

将此值增加到 1 以上以生成更平滑的模型。 gamma 乘以 GCV 或 UBRE/AIC 中的有效自由度。 coden/gamma 可以被视为 GCV 分数中的有效样本量,这也使其能够与 REML/ML 一起使用。使用 P-RE/ML 或 efs 优化器忽略。

fit

如果此参数是 TRUE,则 gam 设置模型并拟合它,但如果它是 FALSE,则设置模型并返回一个包含拟合所需内容的对象 G。请参阅参数 G

paraPen

可选列表,指定应用于参数模型项的任何惩罚。 gam.models 解释更多。

G

通常是 NULL ,但可能包含先前使用 fit=FALSE 调用 gam 返回的对象,在这种情况下,除了 spgammain.outscale 之外的所有其他参数都将被忽略, controlmethodoptimizerfit

in.out

用于初始化外部迭代的可选列表。如果提供,则必须包含两个元素: sp 应该是所有平滑参数的初始化值的数组(所有平滑参数必须有一个值,无论是固定的还是要估计的,但不使用固定 s.p.s 的值) ; scale 是 GCV/UBRE 函数的典型标度,用于传递给外部优化器,或者是标度参数的初始值(如果要通过 RE/ML 进行估计)。

drop.unused.levels

默认情况下,未使用的级别会在拟合之前从因子中删除。对于某些涉及因子变量的平滑,您可能需要将其关闭。仅当您知道自己在做什么时才这样做。

drop.intercept

设置为 TRUE 以强制模型在参数模型部分中实际上没有常量,即使存在因子变量也是如此。当 formula 是列表时可以是向量。

nei

指定 NCV 邻域结构的列表。 k 是每个邻域要删除的索引向量,m 给出每个邻域的末尾。因此 nei$k[(nei$m[j-1]+1):nei$m[j]] 给出邻域 j 丢弃的点。 i 是要预测的点的索引向量,具有相应的端点 mi 。因此nei$i[(nei$mi[j-1]+1):nei$mi[j]] 对要预测邻域 j 的点进行索引。如果nei==NULL(或km 缺失),则获得留一交叉验证。如果提供jackknife,则TRUE 指示使用原始折刀协方差估计器,FALSE 指示使用传统贝叶斯估计。如果未提供,则使用考虑邻域结构的估计器。当 method 不是 NCV 时,jackknife 将被忽略。

discrete

用于设置模型以与 bam 中采用的离散方法一起使用的实验选项。请勿修改。

...

传递的进一步论点,例如到gam.fit(例如mustart)。

细节

广义加性模型 (GAM) 是广义线性模型 (GLM),其中线性预测器由用户指定的协变量平滑函数加上线性预测器的常规参数分量给出。一个简单的例子是:

其中(独立)响应变量 是协变量 的平滑函数。日志是链接函数的示例。请注意,为了可识别模型需要对平滑函数进行约束。默认情况下,这些是自动施加的,并要求函数在观察到的协变量值上求和为零(度量 by 变量的存在是通常抑制这种情况的唯一情况)。

如果模型拟合中绝对允许任何平滑函数,则此类模型的最大似然估计将不可避免地导致 的复杂 over-fitting 估计。因此,模型通常通过惩罚似然最大化来拟合,其中通过为每个平滑函数添加惩罚来修改模型(负对数)似然,惩罚其‘wiggliness’。为了控制惩罚摆动和惩罚拟合不良之间的权衡,每个惩罚都乘以相关的平滑参数:如何估计这些参数,以及如何实际表示平滑函数是从 GLM 转向 GAM 引入的主要统计问题。

gammgcv 实现表示使用惩罚回归样条线的平滑函数,并且默认情况下,在给定所使用的数量基函数的情况下,这些样条线使用设计为最佳的基函数。平滑项可以是任意数量的协变量的函数,并且用户可以对如何测量函数的平滑度进行一定的控制。

mgcv 中的gam 通过使用广义交叉验证 (GCV) 准则解决平滑参数估计问题

或 Un-Biased 风险估计器 (UBRE) 标准

其中 是偏差, 是数据数量, 是尺度参数, 是模型的有效自由度。请注意,UBRE 实际上只是 AIC 重新缩放,但仅在 已知时使用。

替代方案是 GACV、NCV 或 REML 的拉普拉斯近似。有一些证据表明后者实际上可能是最有效的选择。 mgcv 包解决的主要计算挑战是高效可靠地优化平滑度选择标准。

概括地说,gam 的工作原理是,首先为模型公式中的每个平滑项构造基函数和一个或多个二次罚系数矩阵,获得模型公式的严格参数部分的模型矩阵,然后将它们组合起来以获得完整的模型矩阵(/设计矩阵)和一组用于平滑项的惩罚矩阵。此时也获得了线性可识别性约束。该模型适合使用 gam.fitgam.fit3 或变体,这些变体是 glm.fit 的修改。 GAM 惩罚似然最大化问题通过惩罚迭代重加权最小二乘法 (P-IRLS) 解决(参见 Wood 2000)。可以通过三种方式之一选择平滑参数。 (i)“性能迭代”使用这样的事实:在每个P-IRLS步骤中,估计工作惩罚线性模型,并且可以对每个这样的工作模型执行平滑参数估计。最终,在大多数情况下,模型参数估计和平滑参数估计都会收敛。此选项在 bamgamm 中可用。 (ii) 或者,P-IRLS 方案迭代至每个平滑参数试验集的收敛,并且 GCV、UBRE 或 REML 分数仅在收敛时进行评估 - 然后优化是 ‘outer’ 到 P-IRLS 循环:在这种情况下P-IRLS 迭代必须区分,以便于优化,并使用 gam.fit3 或其变体之一来代替 gam.fit 。 (iii) Wood 和 Fasiolo (2017) 的扩展 Fellner-Schall 算法通过简单更新平滑参数交替估计模型系数,最终近似最大化模型的边际似然 (REML)。 gam 默认使用第二种方法,即外迭代。

内置了几种替代的basis-penalty类型来表示模型平滑,但可以轻松添加替代类型(有关概述,请参见smooth.terms,有关如何添加平滑类的信息,请参见smooth.construct)。基础维度的选择(stetit2 术语中的k)是应该仔细考虑的事情(确切的值并不重要,但重要的是不要使其限制性地小,但又不能太大且计算成本高)。应选择比近似相关平滑函数所需的基更大的基。然后,平滑的有效自由度将由该项上的平滑惩罚控制,并且(通常)自动选择(上限由 k-1 或偶尔由 k 设置)。当然k不应该太大,否则计算会很慢(或者在极端情况下,需要估计的系数会比数据多)。

请注意,gam 假设对 GAM 的定义非常包容:本质上可以使用任何惩罚 GLM:为此,gam 允许通过参数 paraPen 对非平滑模型组件进行惩罚,并允许使用线性预测器通过 linear.functional.terms 中说明的求和约定机制依赖于平滑的一般线性函数。 link{family.mgcv} 详细介绍了 GLM 和指数族之外的可用内容。

Wood (2011, 2004) 和 Wood, Pya and Saefken (2016) 中给出了默认基础拟合方法的详细信息。 Wood (2000, 2017) 讨论了一些替代方法。

gam() 不是 Trevor Hastie 原始版本的克隆(如 S-PLUS 或包 gam 中提供)。主要区别是(i)默认情况下模型项平滑度的估计是模型拟合的一部分,(ii)采用贝叶斯方差估计方法,可以更轻松地计算置信区间(具有良好的覆盖概率), (iii) 模型可以依赖于平滑项的任何(有界)线性函数,(iv) 模型的参数部分可以受到惩罚,(v) 可以合并简单的随机效应,以及 (vi) 合并的设施多个变量的平滑是不同的:具体而言,没有 lo 平滑,而是 (a) s 项可以有多个参数,意味着各向同性平滑,并且 (b) tetit2 平滑是通过尺度不变张量积平滑对任意数量变量的平滑交互进行建模的有效手段。球体上的样条线、Duchon 样条线和高斯马尔可夫随机场也可用。 (vii) 超出指数族的模型是可用的。请参阅包 gam ,了解通过原始 Hastie 和 Tibshirani 方法实现的 GAM。

如果 fit=FALSE 该函数返回适合 GAM 所需的项目列表 G,但实际上并不适合它。

否则,该函数将返回 "gam" 类的对象,如 gamObject 中所述。

警告

用于平滑项的默认基本尺寸本质上是任意的,应该检查它们是否太小。请参阅choose.kgam.check

当将模型拟合到很少的响应数据时,自动平滑参数选择不太可能发挥作用。

对于在协变量空间中聚集在一起的许多零的数据,建立 GAM 非常容易,但它会遇到可识别性问题,特别是在使用泊松或二项式族时。问题是,例如log 或 logit 链接,平均值零对应于线性预测尺度上的无限范围。

例子

## see also examples in ?gam.models (e.g. 'by' variables, 
## random effects and tricks for large binary datasets)

library(mgcv)
set.seed(2) ## simulate some data... 
dat <- gamSim(1,n=400,dist="normal",scale=2)
b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
summary(b)
plot(b,pages=1,residuals=TRUE)  ## show partial residuals
plot(b,pages=1,seWithMean=TRUE) ## `with intercept' CIs
## run some basic model checks, including checking
## smoothing basis dimensions...
gam.check(b)

## same fit in two parts .....
G <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),fit=FALSE,data=dat)
b <- gam(G=G)
print(b)

## 2 part fit enabling manipulation of smoothing parameters...
G <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),fit=FALSE,data=dat,sp=b$sp)
G$lsp0 <- log(b$sp*10) ## provide log of required sp vec
gam(G=G) ## it's smoother

## change the smoothness selection method to REML
b0 <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat,method="REML")
## use alternative plotting scheme, and way intervals include
## smoothing parameter uncertainty...
plot(b0,pages=1,scheme=1,unconditional=TRUE) 

## Would a smooth interaction of x0 and x1 be better?
## Use tensor product smooth of x0 and x1, basis 
## dimension 49 (see ?te for details, also ?t2).
bt <- gam(y~te(x0,x1,k=7)+s(x2)+s(x3),data=dat,
          method="REML")
plot(bt,pages=1) 
plot(bt,pages=1,scheme=2) ## alternative visualization
AIC(b0,bt) ## interaction worse than additive

## Alternative: test for interaction with a smooth ANOVA 
## decomposition (this time between x2 and x1)
bt <- gam(y~s(x0)+s(x1)+s(x2)+s(x3)+ti(x1,x2,k=6),
            data=dat,method="REML")
summary(bt)

## If it is believed that x0 and x1 are naturally on 
## the same scale, and should be treated isotropically 
## then could try...
bs <- gam(y~s(x0,x1,k=40)+s(x2)+s(x3),data=dat,
          method="REML")
plot(bs,pages=1)
AIC(b0,bt,bs) ## additive still better. 

## Now do automatic terms selection as well
b1 <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat,
       method="REML",select=TRUE)
plot(b1,pages=1)


## set the smoothing parameter for the first term, estimate rest ...
bp <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),sp=c(0.01,-1,-1,-1),data=dat)
plot(bp,pages=1,scheme=1)
## alternatively...
bp <- gam(y~s(x0,sp=.01)+s(x1)+s(x2)+s(x3),data=dat)


# set lower bounds on smoothing parameters ....
bp<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),
        min.sp=c(0.001,0.01,0,10),data=dat) 
print(b);print(bp)

# same with REML
bp<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),
        min.sp=c(0.1,0.1,0,10),data=dat,method="REML") 
print(b0);print(bp)


## now a GAM with 3df regression spline term & 2 penalized terms

b0 <- gam(y~s(x0,k=4,fx=TRUE,bs="tp")+s(x1,k=12)+s(x2,k=15),data=dat)
plot(b0,pages=1)


## now simulate poisson data...
set.seed(6)
dat <- gamSim(1,n=2000,dist="poisson",scale=.1)

## use "cr" basis to save time, with 2000 data...
b2<-gam(y~s(x0,bs="cr")+s(x1,bs="cr")+s(x2,bs="cr")+
        s(x3,bs="cr"),family=poisson,data=dat,method="REML")
plot(b2,pages=1)

## drop x3, but initialize sp's from previous fit, to 
## save more time...

b2a<-gam(y~s(x0,bs="cr")+s(x1,bs="cr")+s(x2,bs="cr"),
         family=poisson,data=dat,method="REML",
         in.out=list(sp=b2$sp[1:3],scale=1))
par(mfrow=c(2,2))
plot(b2a)

par(mfrow=c(1,1))
## similar example using GACV...

dat <- gamSim(1,n=400,dist="poisson",scale=.25)

b4<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson,
        data=dat,method="GACV.Cp",scale=-1)
plot(b4,pages=1)

## repeat using REML as in Wood 2011...

b5<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson,
        data=dat,method="REML")
plot(b5,pages=1)

 
## a binary example (see ?gam.models for large dataset version)...

dat <- gamSim(1,n=400,dist="binary",scale=.33)

lr.fit <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=binomial,
              data=dat,method="REML")

## plot model components with truth overlaid in red
op <- par(mfrow=c(2,2))
fn <- c("f0","f1","f2","f3");xn <- c("x0","x1","x2","x3")
for (k in 1:4) {
  plot(lr.fit,residuals=TRUE,select=k)
  ff <- dat[[fn[k]]];xx <- dat[[xn[k]]]
  ind <- sort.int(xx,index.return=TRUE)$ix
  lines(xx[ind],(ff-mean(ff))[ind]*.33,col=2)
}
par(op)
anova(lr.fit)
lr.fit1 <- gam(y~s(x0)+s(x1)+s(x2),family=binomial,
               data=dat,method="REML")
lr.fit2 <- gam(y~s(x1)+s(x2),family=binomial,
               data=dat,method="REML")
AIC(lr.fit,lr.fit1,lr.fit2)

## For a Gamma example, see ?summary.gam...

## For inverse Gaussian, see ?rig

## now 2D smoothing...

eg <- gamSim(2,n=500,scale=.1)
attach(eg)

op <- par(mfrow=c(2,2),mar=c(4,4,1,1))

contour(truth$x,truth$z,truth$f) ## contour truth
b4 <- gam(y~s(x,z),data=data) ## fit model
fit1 <- matrix(predict.gam(b4,pr,se=FALSE),40,40)
contour(truth$x,truth$z,fit1)   ## contour fit
persp(truth$x,truth$z,truth$f)    ## persp truth
vis.gam(b4)                     ## persp fit
detach(eg)
par(op)

##################################################
## largish dataset example with user defined knots
##################################################

par(mfrow=c(2,2))
n <- 5000
eg <- gamSim(2,n=n,scale=.5)
attach(eg)

ind<-sample(1:n,200,replace=FALSE)
b5<-gam(y~s(x,z,k=40),data=data,
        knots=list(x=data$x[ind],z=data$z[ind]))
## various visualizations
vis.gam(b5,theta=30,phi=30)
plot(b5)
plot(b5,scheme=1,theta=50,phi=20)
plot(b5,scheme=2)

par(mfrow=c(1,1))
## and a pure "knot based" spline of the same data
b6<-gam(y~s(x,z,k=64),data=data,knots=list(x= rep((1:8-0.5)/8,8),
        z=rep((1:8-0.5)/8,rep(8,8))))
vis.gam(b6,color="heat",theta=30,phi=30)

## varying the default large dataset behaviour via `xt'
b7 <- gam(y~s(x,z,k=40,xt=list(max.knots=500,seed=2)),data=data)
vis.gam(b7,theta=30,phi=30)
detach(eg)

作者

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

Front end design inspired by the S function of the same name based on the work of Hastie and Tibshirani (1990). Underlying methods owe much to the work of Wahba (e.g. 1990) and Gu (e.g. 2002).

参考

Key References on this implementation:

Wood, S.N., N. Pya and B. Saefken (2016), Smoothing parameter and model selection for general smooth models (with discussion). Journal of the American Statistical Association 111, 1548-1575 doi:10.1080/01621459.2016.1180986

Wood, S.N. (2011) Fast stable restricted maximum likelihood and marginal likelihood estimation of semiparametric generalized linear models. Journal of the Royal Statistical Society (B) 73(1):3-36 doi:10.1111/j.1467-9868.2010.00749.x

Wood, S.N. (2004) Stable and efficient multiple smoothing parameter estimation for generalized additive models. J. Amer. Statist. Ass. 99:673-686. [Default method for additive case by GCV (but no longer for generalized)]

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

Wood, S.N. (2006a) Low rank scale invariant tensor product smooths for generalized additive mixed models. Biometrics 62(4):1025-1036

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

Wood, S.N. and M. Fasiolo (2017) A generalized Fellner-Schall method for smoothing parameter optimization with application to Tweedie location, scale and shape models. Biometrics 73 (4), 1071-1081 doi:10.1111/biom.12666

Wood S.N., F. Scheipl and J.J. Faraway (2013) Straightforward intermediate rank tensor product smoothing in mixed models. Statistics and Computing 23: 341-360. doi:10.1007/s11222-012-9314-z

Marra, G and S.N. Wood (2012) Coverage Properties of Confidence Intervals for Generalized Additive Model Components. Scandinavian Journal of Statistics, 39(1), 53-74. doi:10.1111/j.1467-9469.2011.00760.x

Key Reference on GAMs and related models:

Wood, S. N. (2020) Inference and computation with generalized additive models and their extensions. Test 29(2): 307-339. doi:10.1007/s11749-020-00711-5

Hastie (1993) in Chambers and Hastie (1993) Statistical Models in S. Chapman and Hall.

Hastie and Tibshirani (1990) Generalized Additive Models. Chapman and Hall.

Wahba (1990) Spline Models of Observational Data. SIAM

Wood, S.N. (2000) Modelling and Smoothing Parameter Estimation with Multiple Quadratic Penalties. J.R.Statist.Soc.B 62(2):413-428 [The original mgcv paper, but no longer the default methods.]

Background References:

Green and Silverman (1994) Nonparametric Regression and Generalized Linear Models. Chapman and Hall.

Gu and Wahba (1991) Minimizing GCV/GML scores with multiple smoothing parameters via the Newton method. SIAM J. Sci. Statist. Comput. 12:383-398

Gu (2002) Smoothing Spline ANOVA Models, Springer.

McCullagh and Nelder (1989) Generalized Linear Models 2nd ed. Chapman & Hall.

O'Sullivan, Yandall and Raynor (1986) Automatic smoothing of regression functions in generalized linear models. J. Am. Statist.Ass. 81:96-103

Wood (2001) mgcv:GAMs and Generalized Ridge Regression for R. R News 1(2):20-25

Wood and Augustin (2002) GAMs with integrated model selection using penalized regression splines and applications to environmental modelling. Ecological Modelling 157:157-177

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

也可以看看

mgcv-packagegamObjectgam.modelssmooth.termslinear.functional.termsste predict.gamplot.gamsummary.gamgam.sidegam.selectiongam.control gam.checklinear.functional.termsnegbinmagicvis.gam

相关用法


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