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


R smooth.construct.re.smooth.spec GAM 中的簡單隨機效應


R語言 smooth.construct.re.smooth.spec 位於 mgcv 包(package)。

說明

gam 可以處理簡單的獨立隨機效應,通過利用平滑和隨機效應之間的鏈接將隨機效應視為平滑。 s(x,bs="re") 實現了這一點。這些項可以有任意數量的預測變量,這些預測變量可以是數值變量或因子變量的任意混合。這些項產生預測變量的參數交互,並用單位矩陣的倍數來懲罰相應的係數,這對應於 i.i.d 的假設。常態。查看具體信息。

用法

## S3 method for class 're.smooth.spec'
smooth.construct(object, data, knots)
## S3 method for class 'random.effect'
Predict.matrix(object, data)

參數

object

對於 smooth.construct 方法,平滑規範對象,通常由術語 s(x,...,bs="re",) 生成。對於 predict.Matrix 方法,由 smooth.construct 方法生成的類 "random.effect" 的對象。

data

僅包含該術語所需的數據(包括任何 by 變量)的列表,其名稱對應於 object$term (和 object$by )。 by 變量是最後一個元素。

knots

通常包含為基礎設置提供的任何結的列表 - 目前未使用。

細節

通過示例可以最好地了解隨機效應是如何實現的。考慮模型術語 s(x,z,bs="re") 。這將導致與 ~x:z-1 對應的模型矩陣分量被添加到整個模型的模型矩陣中。假設與模型矩陣分量相關的係數是獨立同分布的。正常,方差未知(待估計)。這個假設相當於係數上的恒等懲罰矩陣(即嶺懲罰)。因為這樣的懲罰是滿等級的,所以隨機效應項不需要居中約束。

如果隨機效應規範的性質不清楚,請考慮更多示例:s(x,bs="re") 導致 model.matrix(~x-1) 被附加到整個模型矩陣,而 s(x,v,w,bs="re") 會導致 model.matrix(~x:v:w-1) 被附加到模型矩陣。在這兩種情況下,相應的模型係數均假設為獨立同分布。正常,因此會受到山脊處罰。

一些模型要求同一隨機效應的不同水平對應的係數之間存在差異。有關如何實現這一點,請參閱linear.functional.terms

如果已知矩陣 和未知參數 的隨機效應精度矩陣的形式為 ,則可以在 sxt 參數中提供包含 的列表。在這種情況下,還應在 xt 中提供數組 rank,給出 矩陣的排名。請參閱下麵的簡單示例。

請注意,隨機效應項不支持平滑id。與大多數平滑項不同,在嵌套情況下,附帶條件永遠不會應用於隨機效應項(因為它們無需附帶條件即可識別)。

以這種方式實現的隨機效應不會利用許多隨機效應的稀疏結構,因此對於具有大量隨機效應的模型來說可能相對低效,而 gamm4gamm 可能是更好的選擇。另請注意,gam 將不支持係數多於數據的模型。

因子變量隨機效應故意具有不可觀察水平的情況需要特殊處理。您應該在模型擬合函數中設置 drop.unused.levels=FALSE gambamgamm ,首先確保任何固定效應因子不包含未觀察到的水平。

該實現的設計是為了向 predict.gam 提供隨機效應因子水平(擬合時不是因子水平),將導致相應的隨機效應(或涉及它的交互作用)設置為零(標準誤差為零)以進行預測。有關示例,請參閱random.effects。這是通過 Predict.matrix 方法將涉及 NA 因子的預測矩陣的任何行歸零來實現的。如果擬合數據中不存在水平,predict.gam 會將任何因子觀察值設置為 NA

"random.effect" 的對象或將隨機效應係數映射到隨機效應本身的矩陣。

例子

## see ?gam.vcomp

require(mgcv)
## simulate simple random effect example
set.seed(4)
nb <- 50; n <- 400
b <- rnorm(nb)*2 ## random effect
r <- sample(1:nb,n,replace=TRUE) ## r.e. levels
y <- 2 + b[r] + rnorm(n)
r <- factor(r)
## fit model....
b <- gam(y ~ s(r,bs="re"),method="REML")
gam.vcomp(b)

## example with supplied precision matrices...
b <- c(rnorm(nb/2)*2,rnorm(nb/2)*.5) ## random effect now with 2 variances
r <- sample(1:nb,n,replace=TRUE) ## r.e. levels
y <- 2 + b[r] + rnorm(n)
r <- factor(r)
## known precision matrix components...
S <- list(diag(rep(c(1,0),each=nb/2)),diag(rep(c(0,1),each=nb/2)))
b <- gam(y ~ s(r,bs="re",xt=list(S=S,rank=c(nb/2,nb/2))),method="REML")
gam.vcomp(b)
summary(b)

作者

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

參考

Wood, S.N. (2008) Fast stable direct fitting and smoothness selection for generalized additive models. Journal of the Royal Statistical Society (B) 70(3):495-518

也可以看看

gam.vcomp , gamm

相關用法


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