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


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