当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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.。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。