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


R smooth.construct.sz.smooth.spec GAM 中的约束因子平滑交互


R语言 smooth.construct.sz.smooth.spec 位于 mgcv 包(package)。

说明

构建因子平滑交互作用以排除主效应(以及低阶因子平滑交互作用)。为所提供的因子水平的每个组合构建平滑。通过适当应用总和到零对比与跨因子水平的等效平滑系数,可以实现所需的低阶效应排除。

有关替代因子平滑交互的信息,请参阅factor.smooth

用法

## S3 method for class 'sz.smooth.spec'
smooth.construct(object, data, knots)
## S3 method for class 'sz.interaction'
Predict.matrix(object, data)

参数

object

对于 smooth.construct 方法,平滑规范对象,通常由术语 s(x,...,bs="sz",) 生成。对于 predict.Matrix 方法,由 smooth.construct 方法生成的类 "sz.interaction" 的对象。

data

仅包含该术语所需的数据(包括任何 by 变量)的列表,其名称对应于 object$term

knots

包含为顺利基础设置提供的任何结的列表。

细节

此类为所提供的因子变量的级别的每个组合生成平滑。例如,s(fac,x,bs="sz")fac 的每个级别生成 x 的平滑。平滑被限制为表示与主效应平滑的偏差,因此诸如

可以以可识别的方式进行估计,其中 表示适用于第 i 个观测值的某些因子的水平。通过约束表示 的样条系数来确保这种情况下的可识别性。特别是,如果 的第 i 个系数,则约束为

这种归零约束是使用归零对比来实现的:单位矩阵附加了额外的 -1 行。首先考虑单一因子的情况。与每个因子级别的平滑相对应的模型矩阵是因子的模型矩阵与平滑的模型矩阵的行张量积(请参阅tensor.prod.model.matrix)。对比度矩阵是该因子与零对比度之和的克罗内克乘积,以及由平滑系数的数量确定的维数单位矩阵。

如果有多个因子,则总体模型矩阵是所有因子模型矩阵和平滑矩阵的行克罗内克乘积,而对比度是因子的所有 sum-to-zero 对比度和最终单位矩阵的克罗内克乘积。请注意,这种构造意味着因子的主要影响(以及任何相互作用)包含在因子水平相关的平滑中。换句话说,各个平滑线并非均居中。这意味着添加因子的主效应或相互作用将导致排名不足的模型。

这些项可以具有每个平滑的平滑参数,或用于所有平滑的单个平滑参数。后者是通过为平滑项指定 id 来指定的。例如s(fac,x,bs="sz",id=1)

可以通过提供一个列表作为 sxt 参数以及 bs 项来选择平滑的基础。例如s(fac,x,xt=list(bs="cr")) 选择"cr" 基础。默认为"tp"

此类的绘图方法有两种方案。 scheme==0 是彩色的,而 scheme==1 是黑白的。目前它仅适用于一维平滑。

"sz.interaction" 的对象或将因子平滑交互的系数映射到平滑本身的矩阵。

例子

library(mgcv)
set.seed(0)
dat <- gamSim(4)

b <- gam(y ~ s(x2)+s(fac,x2,bs="sz")+s(x0),data=dat,method="REML")
plot(b,pages=1)
summary(b)

## Example involving 2 factors

f1 <- function(x2) 2 * sin(pi * x2)
f2 <- function(x2) exp(2 * x2) - 3.75887
f3 <- function(x2) 0.2 * x2^11 * (10 * (1 - x2))^6 + 10 * (10 * x2)^3 * 
            (1 - x2)^10

n <- 600
x <- runif(n)
f1 <- factor(sample(c("a","b","c"),n,replace=TRUE))
f2 <- factor(sample(c("foo","bar"),n,replace=TRUE))

mu <- f3(x)
for (i in 1:3) mu <- mu + exp(2*(2-i)*x)*(f1==levels(f1)[i])
for (i in 1:2) mu <- mu + 10*i*x*(1-x)*(f2==levels(f2)[i])
y <- mu + rnorm(n)
dat <- data.frame(y=y,x=x,f1=f1,f2=f2)
b <- gam(y ~ s(x)+s(f1,x,bs="sz")+s(f2,x,bs="sz")+s(f1,f2,x,bs="sz",id=1),data=dat,method="REML")
plot(b,pages=1,scale=0)



作者

Simon N. Wood simon.wood@r-project.org with input from Matteo Fasiolo.

也可以看看

gam.modelsgammfactor.smooth

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Constrained factor smooth interactions in GAMs。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。