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


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