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


R bam.update 為新數據更新嚴格附加的 bam 模型。


R語言 bam.update 位於 mgcv 包(package)。

說明

通過 bam 擬合的恒等鏈接模型的高斯可以在新數據可用時進行有效更新,隻需更新估計所基於的 QR 分解,並從先前的估計開始重新優化平滑參數。該例程實現了這一點。

用法

bam.update(b,data,chunk.size=10000)

參數

b

bam 擬合的 gam 對象,代表嚴格的附加模型(即 gaussian 錯誤、identity 鏈接)。

data

用於擴充用於獲取 b 的原始數據的額外數據。如果原始擬合已加權,則必須包含 weights 列;如果原始擬合中的 AR.start 不是 NULL,則必須包含 AR.start 列。

chunk.size

獲取擬合值時一次性處理的數據子集的大小。

細節

bam.update 更新 b 表示的 GAM(加權)模型矩陣的 QR 分解,以考慮新數據。正交因子乘以響應向量也被更新。鑒於這些更新,可以重新估計模型和平滑參數,就好像整個數據集(原始數據和新數據)已一次性擬合。該函數將使用與原始模型擬合中使用的相同的 AR1 模型作為殘差(請參閱 bamrho 參數)。

請注意,如果使用的平滑基具有參考數據設置的任何細節(例如默認結位置),則一次擬合所有數據與通過更新分階段擬合之間的擬合可能存在較小的數值差異。

"gam" 的對象,如 gamObject 中所述。

警告

AIC 計算當前不考慮 AR 模型(如果使用)。

例子

library(mgcv)
## following is not *very* large, for obvious reasons...
set.seed(8)
n <- 5000
dat <- gamSim(1,n=n,dist="normal",scale=5)
dat[c(50,13,3000,3005,3100),]<- NA
dat1 <- dat[(n-999):n,]
dat0 <- dat[1:(n-1000),]
bs <- "ps";k <- 20
method <- "GCV.Cp"
b <- bam(y ~ s(x0,bs=bs,k=k)+s(x1,bs=bs,k=k)+s(x2,bs=bs,k=k)+
           s(x3,bs=bs,k=k),data=dat0,method=method)

b1 <- bam.update(b,dat1)

b2 <- bam.update(bam.update(b,dat1[1:500,]),dat1[501:1000,])
 
b3 <- bam(y ~ s(x0,bs=bs,k=k)+s(x1,bs=bs,k=k)+s(x2,bs=bs,k=k)+
           s(x3,bs=bs,k=k),data=dat,method=method)
b1;b2;b3

## example with AR1 errors...

e <- rnorm(n)
for (i in 2:n) e[i] <- e[i-1]*.7 + e[i]
dat$y <- dat$f + e*3
dat[c(50,13,3000,3005,3100),]<- NA
dat1 <- dat[(n-999):n,]
dat0 <- dat[1:(n-1000),]

b <- bam(y ~ s(x0,bs=bs,k=k)+s(x1,bs=bs,k=k)+s(x2,bs=bs,k=k)+
           s(x3,bs=bs,k=k),data=dat0,rho=0.7)

b1 <- bam.update(b,dat1)


summary(b1);summary(b2);summary(b3)

作者

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

參考

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

也可以看看

mgcv-package , bam

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Update a strictly additive bam model for new data.。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。