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


R t2 在 GAM 公式中定義替代張量積平滑


R語言 t2 位於 mgcv 包(package)。

說明

用於在 gam 公式中定義張量積平滑的 te 的替代方案。結果是懲罰是單位矩陣的非重疊倍數(某些行和列歸零)的結構。該構造源自 Fabian Scheipl(mgcv 實現,2010 年),類似於平滑樣條方差分析(Gu,2002 年),但使用低秩懲罰回歸樣條邊際。這種結構的主要優點是它可以與 gamm4 包中的 gamm4 一起使用。

用法

t2(..., k=NA,bs="cr",m=NA,d=NA,by=NA,xt=NULL,
               id=NULL,sp=NULL,full=FALSE,ord=NULL,pc=NULL)

參數

...

變量列表,這些變量是該平滑函數的協變量。此處最好避免形式取決於數據值的轉換:例如t2(log(x),z) 可以,但 t2(I(x/sd(x)),z) 不行(請參閱 predict.gam )。

k

用於表示平滑項的基數維度。如果未提供,則設置為 5^d 。如果作為單個數字提供,則該基本尺寸將用於每個基礎。如果作為數組提供,則元素是張量積的分量(邊)基的維度。有關更多信息,請參閱choose.k

bs

數組(或單個字符串)指定每個邊際基礎的類型。 "cr" 用於三次回歸樣條; "cs" 用於具有收縮的三次回歸樣條; "cc" 用於周期性/循環三次回歸樣條; "tp" 用於薄板回歸樣條; "ts" 用於 t.p.r.s.具有額外的收縮。有關詳細信息和完整列表,請參閱smooth.terms。此處也可以使用用戶定義的基數(有關示例,請參閱smooth.construct)。如果僅給出一個堿基代碼,則該代碼將用於所有堿基。

m

每個項的樣條階數及其懲罰(對於使用它的平滑類)。如果給出一個數字,則它用於所有術語。向量可用於為每個邊距提供不同的m。對於采用向量 m 的邊距(例如 p.splineDuchon.spline ),則可以提供一個列表,其中每個邊距有一個向量元素。 NA 自動初始化。 m 被某些堿基忽略(例如 "cr" )。

d

邊際基礎維度數組。例如,如果您想要由 2 維 t.p.r.s. 的張量積組成的 3 個協變量的平滑。基和一維基,然後設置 d=c(2,1) 。內置基礎類型和尺寸之間的不兼容性將通過重置基礎類型來解決。

by

與每個協變量具有相同維度的數值或因子變量。在數值向量的情況下,元素乘以相應協變量值評估的平滑度(“變化係數模型”結果)。在因子情況下,會為每個因子級別生成平滑的副本。有關更多詳細信息,請參閱gam.models。如果協變量是矩陣,也可能是矩陣:在這種情況下實現平滑的線性函數(有關詳細信息,請參閱gam.modelslinear.functional.terms)。

xt

或者是單個對象,提供要傳遞給每個邊際基礎構造函數的任何額外信息,或者是此類對象的列表,每個對象對應一個邊際基礎。

id

標識該術語的標簽或整數,以便將其平滑參數鏈接到相同類型的其他參數。如果兩個或多個平滑項具有相同的 id,那麽它們將具有相同的平滑參數,並且默認情況下具有相同的基數(第一次出現定義基本類型,但來自基礎構造中使用的所有術語的數據)。

sp

為此項提供的任何平滑參數。必須是與此平滑的懲罰數長度相同的數組。正或零元素被視為固定平滑參數。負元素表示自動初始化。將 sp 參數中提供的值覆蓋為 gam 。被 gamm 忽略。

full

如果TRUE,則空空間列和範圍空間的每個組合都有單獨的懲罰。這給出了嚴格的不變性。如果FALSE 零空間和範圍空間的每種組合都會產生一個懲罰,但每個零空間基的列都被視為一組。後者更為簡約,但確實意味著不變性隻能通過零空間基向量的任意重新縮放來實現。

ord

給出要保留的項順序的數組。這裏的順序是指構建組件時使用的邊範圍空間的數量。 NULL 保留一切。

pc

如果不是 NULL ,則表示點約束:平滑應在此處給出的點處通過零(作為名稱與平滑名稱相對應的向量或列表)。如果提供,切勿忽略。請參閱identifiability

細節

多個協變量的平滑可以根據用於表示一個(或有時多個)協變量的平滑的基數的張量積來構造。為此,使用關聯的模型矩陣和懲罰矩陣生成‘marginal’ 堿基。這些被重新參數化,以便懲罰在所有地方都為零,除了前導對角線上的一些元素之外,它們都具有相同的非零值。對於每個邊際基礎,這種重新參數化會產生未懲罰和懲罰的參數子集(詳細信息請參見 Wood,2004 年的附錄)。

然後將重新參數化的邊際基數組合起來,生成所有協變量的單個函數的基數(維度由邊際基數的維度的乘積給出)。在這個設置中,有多個懲罰矩陣 - 全部為零,但對於前導對角線上的常量和零的混合。沒有兩個處罰在同一位置有非零條目。

本質上,張量積的基礎可以被認為是由邊平滑的懲罰(範圍)或未懲罰(零)空間基的一組乘積構造而成(參見 Gu,2002,第 2.4 節)。要構造其中一個集合,請從每個邊際選擇零空間或範圍空間,然後從這些基構造乘積基。結果會受到山脊懲罰(除非它恰好是完全邊零空間的乘積)。平滑的整個基礎是由可以以這種方式構建的所有不同的產品基礎構建的。平滑基礎的單獨懲罰分量各自具有方差分析(術語分解)方麵的解釋。有關更多信息,請參閱pen.edf

請注意,有兩種構建產品的方法。當 full=FALSE 時,空空間基數將被視為每個產品中的整體,但當 full=TRUE 時,每個空空間列將被視為單獨的空空間。後者會導致更多處罰,但與 SS-ANOVA 方法嚴格類似。

張量積平滑對於表示以不同單位測量的協變量的函數特別有用,盡管它們通常不如 t.p.r.s. 表現得那麽好。平滑縮放良好的協變量。

另請注意,如果在兩種情況下使用相同的邊際基數,則由較低階張量積平滑構造的 GAM 會嵌套在由較高階張量積平滑構造的 GAM 中(邊際平滑本身隻是張量積平滑的特殊情況。)

請注意,如果任何邊際不需要居中,則張量積平滑不應居中(施加可識別性約束)。張量積平滑的構造函數確保了這種情況的發生。

該函數不計算變量參數。

t2.smooth.spec 對象,定義張量積,平滑地由 smooth.construct.tensor.smooth.spec 函數轉換為基礎和懲罰。

返回的對象包含以下項目:

margin

s 返回類型的 smooth.spec 對象列表,定義構造張量積 smooth 的基礎。

term

文本字符串數組,給出該項作為函數的協變量的名稱。

by

是任何 by 文本變量的名稱("NA" 沒有)。

fx

邏輯數組,其中包含該項的每個懲罰的元素(張量積平滑有多個懲罰)。 TRUE 如果要忽略懲罰,則 FALSE ,否則。

label

適合這個平滑術語的文本標簽。

dim

平滑器的維度 - 即它作為函數的協變量的數量。

mp

TRUE 是要使用的多重懲罰(默認)。

np

TRUE 根據函數值重新參數化一維邊平滑(默認)。

id

提供給 teid 參數。

sp

提供給 tesp 參數。

例子


# following shows how tensor product deals nicely with 
# badly scaled covariates (range of x 5% of range of z )
require(mgcv)
test1<-function(x,z,sx=0.3,sz=0.4)  
{ x<-x*20
  (pi**sx*sz)*(1.2*exp(-(x-0.2)^2/sx^2-(z-0.3)^2/sz^2)+
  0.8*exp(-(x-0.7)^2/sx^2-(z-0.8)^2/sz^2))
}
n<-500
old.par<-par(mfrow=c(2,2))
x<-runif(n)/20;z<-runif(n);
xs<-seq(0,1,length=30)/20;zs<-seq(0,1,length=30)
pr<-data.frame(x=rep(xs,30),z=rep(zs,rep(30,30)))
truth<-matrix(test1(pr$x,pr$z),30,30)
f <- test1(x,z)
y <- f + rnorm(n)*0.2
b1<-gam(y~s(x,z))
persp(xs,zs,truth);title("truth")
vis.gam(b1);title("t.p.r.s")
b2<-gam(y~t2(x,z))
vis.gam(b2);title("tensor product")
b3<-gam(y~t2(x,z,bs=c("tp","tp")))
vis.gam(b3);title("tensor product")
par(old.par)

test2<-function(u,v,w,sv=0.3,sw=0.4)  
{ ((pi**sv*sw)*(1.2*exp(-(v-0.2)^2/sv^2-(w-0.3)^2/sw^2)+
  0.8*exp(-(v-0.7)^2/sv^2-(w-0.8)^2/sw^2)))*(u-0.5)^2*20
}
n <- 500
v <- runif(n);w<-runif(n);u<-runif(n)
f <- test2(u,v,w)
y <- f + rnorm(n)*0.2

## tensor product of 2D Duchon spline and 1D cr spline
m <- list(c(1,.5),0)
b <- gam(y~t2(v,w,u,k=c(30,5),d=c(2,1),bs=c("ds","cr"),m=m))

## look at the edf per penalty. "rr" denotes interaction term 
## (range space range space). "rn" is interaction of null space
## for u with range space for v,w...
pen.edf(b) 

## plot results...
op <- par(mfrow=c(2,2))
vis.gam(b,cond=list(u=0),color="heat",zlim=c(-0.2,3.5))
vis.gam(b,cond=list(u=.33),color="heat",zlim=c(-0.2,3.5))
vis.gam(b,cond=list(u=.67),color="heat",zlim=c(-0.2,3.5))
vis.gam(b,cond=list(u=1),color="heat",zlim=c(-0.2,3.5))
par(op)

b <- gam(y~t2(v,w,u,k=c(25,5),d=c(2,1),bs=c("tp","cr"),full=TRUE),
         method="ML")
## more penalties now. numbers in labels like "r1" indicate which 
## basis function of a null space is involved in the term. 
pen.edf(b) 

作者

Simon N. Wood simon.wood@r-project.org and Fabian Scheipl

參考

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

Gu, C. (2002) Smoothing Spline ANOVA, Springer.

Alternative approaches to functional ANOVA decompositions, *not* implemented by t2 terms, are discussed in:

Belitz and Lang (2008) Simultaneous selection of variables and smoothing parameters in structured additive regression models. Computational Statistics & Data Analysis, 53(1):61-81

Lee, D-J and M. Durban (2011) P-spline ANOVA type interaction models for spatio-temporal smoothing. Statistical Modelling, 11:49-69

Wood, S.N. (2006) Low-Rank Scale-Invariant Tensor Product Smooths for Generalized Additive Mixed Models. Biometrics 62(4): 1025-1036.

也可以看看

te s , gam , gamm ,

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Define alternative tensor product smooths in GAM formulae。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。