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


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