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


R smoothCon GAM 平滑項的預測/構造包裝函數


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

說明

用於構建 GAM 中的平滑項並進行預測的包裝函數。包裝器的目的是允許平滑項的user-transparant重新參數化,以便在需要時允許將可識別性約束吸收到每個項的參數化中。該例程還自動處理‘by’變量和可識別性約束的構造,盡管這種行為可以是over-ridden。

用法

smoothCon(object,data,knots=NULL,absorb.cons=FALSE,
          scale.penalty=TRUE,n=nrow(data),dataX=NULL,
          null.space.penalty=FALSE,sparse.cons=0,
          diagonal.penalty=FALSE,apply.by=TRUE,modCon=0)
PredictMat(object,data,n=nrow(data))

參數

object

是平滑規範對象或平滑對象。

data

包含要評估平滑項的(命名)協變量值的 DataFrame 、模型框或列表。如果它是一個列表,則必須提供n

knots

可選 DataFrame ,提供用於基礎施工的任何結位置。

absorb.cons

設置為 TRUE 以便將可識別性約束吸收到基礎中。

scale.penalty

懲罰係數矩陣是否應該縮放為與項模型矩陣與其自身的內積大致相同的‘size’?這可以提高gamm擬合的性能。

n

每個協變量的值的數量,或者如果協變量是矩陣,則該矩陣中的行數:如果 data 是列表,則必須顯式提供。

dataX

有時應使用 data 中的數據建立基礎,但模型矩陣應使用 dataX 中提供的另一組數據構建 - n 假定兩者相同。促進 id 的順利進行。

null.space.penalty

如果在平滑中添加額外的懲罰,這將懲罰懲罰零空間中平滑的分量:提供了一種完全懲罰模型外項的方法。

apply.by

設置為 FALSE 具有與默認情況下完全相同的基礎設置,但要返回,請向返回對象添加一個附加矩陣 X0,其中包含不帶 by 變量的模型矩陣(如果存在 by 變量)。對於 bam 離散方法設置很有用。

sparse.cons

如果0,則使用默認總和為零約束。如果 -1 則使用掃描並將總和降至零約束(默認使用 bam )。如果1,則將一個係數設置為零,作為稀疏平滑的約束。如果2,則稀疏係數和為零約束用於稀疏平滑。如果平滑提供其自己的約束,則這些選項都不會產生影響。

diagonal.penalty

如果TRUE,則重新參數化平滑以將懲罰轉換為單位矩陣,最終對角線元素歸零(對應於懲罰零空間)。可能會在返回的對象中生成矩陣 diagRPPredictMat 使用。

modCon

強製修改任何平滑提供的約束。 0 - 不執行任何操作。 1 - 刪除提供的約束,替換為自動生成的約束。 2 - 設置擬合和預測約束來預測約束。 3 - 設置擬合並預測約束以擬合約束。

細節

這些包裝函數的存在是為了允許使用 smooth.constructPredict.matrix 方法函數指定的平滑重新參數化,以便在擬合時不再需要可識別性約束。這是以用戶透明的方式完成的,但在 GAM 的使用中通常並不重要。該例程還處理by 變量,並將創建默認的可識別性約束。

如果用戶定義的平滑構造函數本身處理 by 變量,則其返回的平滑對象應包含對象 by.done 。如果不存在,則 smoothCon 將使用默認代碼。同樣,如果用戶定義的 Predict.matrix 方法在內部處理 by 變量,則返回的矩陣應具有 "by.done" 屬性。

除非平滑構造函數包含約束矩陣 C,否則會生成默認的居中約束,即協變量上的各項之和為零。為了沒有約束(在這種情況下,你最好有一個完整的排名懲罰!)矩陣C應該沒有行。如果平滑器具有稀疏模型矩陣,則可以選擇使用不生成或生成有限填充的居中約束。

smoothCon 返回平滑列表,因為因子 by 變量會產生平滑的多個副本,每個副本都乘以與一個因子級別關聯的虛擬變量。 smoothConby 變量存在的情況下修改平滑對象標簽,以確保它們是唯一的,它還存儲與平滑關聯的變量因子的級別,以供 PredictMat 稍後使用。

gam 使用的參數化可以通過 gam.control 進行控製。

smoothCon 中,由適當的 smooth.construct 方法函數返回的 smooth 對象列表。如果要吸收約束,則對象將具有屬性 "qrc""nCons""nCons"是約束的數量。 "qrc" 通常是約束矩陣的 qr 分解(由 qr 返回),但如果它是單個正整數,則它是要設置為零的係數的索引,如果它是負數,則這表示參數之和為零。

對於 predictMat ,該矩陣將與平滑相關的參數映射到在 object 中給出的協變量值處評估的平滑值向量。

例子

## example of using smoothCon and PredictMat to set up a basis
## to use for regression and make predictions using the result
library(MASS) ## load for mcycle data.
## set up a smoother...
sm <- smoothCon(s(times,k=10),data=mcycle,knots=NULL)[[1]]
## use it to fit a regression spline model...
beta <- coef(lm(mcycle$accel~sm$X-1))
with(mcycle,plot(times,accel)) ## plot data
times <- seq(0,60,length=200)  ## creat prediction times
## Get matrix mapping beta to spline prediction at 'times'
Xp <- PredictMat(sm,data.frame(times=times))
lines(times,Xp%*%beta) ## add smooth to plot

## Same again but using a penalized regression spline of
## rank 30....
sm <- smoothCon(s(times,k=30),data=mcycle,knots=NULL)[[1]]
E <- t(mroot(sm$S[[1]])) ## square root penalty
X <- rbind(sm$X,0.1*E) ## augmented model matrix
y <- c(mcycle$accel,rep(0,nrow(E))) ## augmented data
beta <- coef(lm(y~X-1)) ## fit penalized regression spline
Xp <- PredictMat(sm,data.frame(times=times)) ## prediction matrix
with(mcycle,plot(times,accel)) ## plot data
lines(times,Xp%*%beta) ## overlay smooth

作者

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

參考

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

也可以看看

gam.control , smooth.construct , Predict.matrix

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Prediction/Construction wrapper functions for GAM smooth terms。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。