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


R smoothCon GAM 平滑项的预测/构造包装函数


R语言 smoothCon 位于 mgcv 包(package)。

说明

用于构建 GAM 中的平滑项并进行预测的包装函数。包装器的目的是允许平滑项的user-transparant重新参数化,以便在需要时允许将可识别性约束吸收到每个项的参数化中。该例程还自动处理‘by’变量和可识别性约束的构造,尽管这种行为可以是over-ridden。

用法

smoothCon(object,data,knots=NULL,absorb.cons=FALSE,
          scale.penalty=TRUE,n=nrow(data),dataX=NULL,
          null.space.penalty=FALSE,sparse.cons=0,
          diagonal.penalty=FALSE,apply.by=TRUE,modCon=0)
PredictMat(object,data,n=nrow(data))

参数

object

是平滑规范对象或平滑对象。

data

包含要评估平滑项的(命名)协变量值的 DataFrame 、模型框或列表。如果它是一个列表,则必须提供n

knots

可选 DataFrame ,提供用于基础施工的任何结位置。

absorb.cons

设置为 TRUE 以便将可识别性约束吸收到基础中。

scale.penalty

惩罚系数矩阵是否应该缩放为与项模型矩阵与其自身的内积大致相同的‘size’?这可以提高gamm拟合的性能。

n

每个协变量的值的数量,或者如果协变量是矩阵,则该矩阵中的行数:如果 data 是列表,则必须显式提供。

dataX

有时应使用 data 中的数据建立基础,但模型矩阵应使用 dataX 中提供的另一组数据构建 - n 假定两者相同。促进 id 的顺利进行。

null.space.penalty

如果在平滑中添加额外的惩罚,这将惩罚惩罚零空间中平滑的分量:提供了一种完全惩罚模型外项的方法。

apply.by

设置为 FALSE 具有与默认情况下完全相同的基础设置,但要返回,请向返回对象添加一个附加矩阵 X0,其中包含不带 by 变量的模型矩阵(如果存在 by 变量)。对于 bam 离散方法设置很有用。

sparse.cons

如果0,则使用默认总和为零约束。如果 -1 则使用扫描并将总和降至零约束(默认使用 bam )。如果1,则将一个系数设置为零,作为稀疏平滑的约束。如果2,则稀疏系数和为零约束用于稀疏平滑。如果平滑提供其自己的约束,则这些选项都不会产生影响。

diagonal.penalty

如果TRUE,则重新参数化平滑以将惩罚转换为单位矩阵,最终对角线元素归零(对应于惩罚零空间)。可能会在返回的对象中生成矩阵 diagRPPredictMat 使用。

modCon

强制修改任何平滑提供的约束。 0 - 不执行任何操作。 1 - 删除提供的约束,替换为自动生成的约束。 2 - 设置拟合和预测约束来预测约束。 3 - 设置拟合并预测约束以拟合约束。

细节

这些包装函数的存在是为了允许使用 smooth.constructPredict.matrix 方法函数指定的平滑重新参数化,以便在拟合时不再需要可识别性约束。这是以用户透明的方式完成的,但在 GAM 的使用中通常并不重要。该例程还处理by 变量,并将创建默认的可识别性约束。

如果用户定义的平滑构造函数本身处理 by 变量,则其返回的平滑对象应包含对象 by.done 。如果不存在,则 smoothCon 将使用默认代码。同样,如果用户定义的 Predict.matrix 方法在内部处理 by 变量,则返回的矩阵应具有 "by.done" 属性。

除非平滑构造函数包含约束矩阵 C,否则会生成默认的居中约束,即协变量上的各项之和为零。为了没有约束(在这种情况下,你最好有一个完整的排名惩罚!)矩阵C应该没有行。如果平滑器具有稀疏模型矩阵,则可以选择使用不生成或生成有限填充的居中约束。

smoothCon 返回平滑列表,因为因子 by 变量会产生平滑的多个副本,每个副本都乘以与一个因子级别关联的虚拟变量。 smoothConby 变量存在的情况下修改平滑对象标签,以确保它们是唯一的,它还存储与平滑关联的变量因子的级别,以供 PredictMat 稍后使用。

gam 使用的参数化可以通过 gam.control 进行控制。

smoothCon 中,由适当的 smooth.construct 方法函数返回的 smooth 对象列表。如果要吸收约束,则对象将具有属性 "qrc""nCons""nCons"是约束的数量。 "qrc" 通常是约束矩阵的 qr 分解(由 qr 返回),但如果它是单个正整数,则它是要设置为零的系数的索引,如果它是负数,则这表示参数之和为零。

对于 predictMat ,该矩阵将与平滑相关的参数映射到在 object 中给出的协变量值处评估的平滑值向量。

例子

## example of using smoothCon and PredictMat to set up a basis
## to use for regression and make predictions using the result
library(MASS) ## load for mcycle data.
## set up a smoother...
sm <- smoothCon(s(times,k=10),data=mcycle,knots=NULL)[[1]]
## use it to fit a regression spline model...
beta <- coef(lm(mcycle$accel~sm$X-1))
with(mcycle,plot(times,accel)) ## plot data
times <- seq(0,60,length=200)  ## creat prediction times
## Get matrix mapping beta to spline prediction at 'times'
Xp <- PredictMat(sm,data.frame(times=times))
lines(times,Xp%*%beta) ## add smooth to plot

## Same again but using a penalized regression spline of
## rank 30....
sm <- smoothCon(s(times,k=30),data=mcycle,knots=NULL)[[1]]
E <- t(mroot(sm$S[[1]])) ## square root penalty
X <- rbind(sm$X,0.1*E) ## augmented model matrix
y <- c(mcycle$accel,rep(0,nrow(E))) ## augmented data
beta <- coef(lm(y~X-1)) ## fit penalized regression spline
Xp <- PredictMat(sm,data.frame(times=times)) ## prediction matrix
with(mcycle,plot(times,accel)) ## plot data
lines(times,Xp%*%beta) ## overlay smooth

作者

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

参考

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

也可以看看

gam.control , smooth.construct , Predict.matrix

相关用法


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