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 、模型框或列表。如果它是一个列表,则必须提供 |
knots |
可选 DataFrame ,提供用于基础施工的任何结位置。 |
absorb.cons |
设置为 |
scale.penalty |
惩罚系数矩阵是否应该缩放为与项模型矩阵与其自身的内积大致相同的‘size’?这可以提高 |
n |
每个协变量的值的数量,或者如果协变量是矩阵,则该矩阵中的行数:如果 |
dataX |
有时应使用 |
null.space.penalty |
如果在平滑中添加额外的惩罚,这将惩罚惩罚零空间中平滑的分量:提供了一种完全惩罚模型外项的方法。 |
apply.by |
设置为 |
sparse.cons |
如果 |
diagonal.penalty |
如果 |
modCon |
强制修改任何平滑提供的约束。 0 - 不执行任何操作。 1 - 删除提供的约束,替换为自动生成的约束。 2 - 设置拟合和预测约束来预测约束。 3 - 设置拟合并预测约束以拟合约束。 |
细节
这些包装函数的存在是为了允许使用 smooth.construct
和 Predict.matrix
方法函数指定的平滑重新参数化,以便在拟合时不再需要可识别性约束。这是以用户透明的方式完成的,但在 GAM 的使用中通常并不重要。该例程还处理by
变量,并将创建默认的可识别性约束。
如果用户定义的平滑构造函数本身处理 by
变量,则其返回的平滑对象应包含对象 by.done
。如果不存在,则 smoothCon
将使用默认代码。同样,如果用户定义的 Predict.matrix
方法在内部处理 by
变量,则返回的矩阵应具有 "by.done"
属性。
除非平滑构造函数包含约束矩阵 C
,否则会生成默认的居中约束,即协变量上的各项之和为零。为了没有约束(在这种情况下,你最好有一个完整的排名惩罚!)矩阵C
应该没有行。如果平滑器具有稀疏模型矩阵,则可以选择使用不生成或生成有限填充的居中约束。
smoothCon
返回平滑列表,因为因子 by
变量会产生平滑的多个副本,每个副本都乘以与一个因子级别关联的虚拟变量。 smoothCon
在 by
变量存在的情况下修改平滑对象标签,以确保它们是唯一的,它还存储与平滑关联的变量因子的级别,以供 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/
也可以看看
相关用法
- R smooth.construct.cr.smooth.spec GAM 中的惩罚三次回归样条
- R smooth.construct.bs.smooth.spec GAM 中的惩罚 B 样条
- R smooth.construct GAM 中平滑项的构造函数
- R smooth.construct.sz.smooth.spec GAM 中的约束因子平滑交互
- R smooth.construct.re.smooth.spec GAM 中的简单随机效应
- R smooth.info 提供有关平滑规范的额外信息的通用函数
- R smooth2random 将平滑转换为适合估计随机效应的形式
- R smooth.construct.mrf.smooth.spec 马尔可夫随机场平滑
- R smooth.construct.gp.smooth.spec 低阶高斯过程平滑
- R smooth.construct.tp.smooth.spec GAM 中的惩罚薄板回归样条
- R smooth.construct.ad.smooth.spec GAM 中的自适应平滑
- R smooth.construct.so.smooth.spec 皂膜平滑剂
- R smooth.construct.ds.smooth.spec 低阶 Duchon 1977 样条
- R smooth.construct.fs.smooth.spec GAM 中平滑交互的因子
- R smooth.construct.ps.smooth.spec GAM 中的 P 样条
- R smooth.construct.sos.smooth.spec 球体上的样条线
- R smooth.construct.tensor.smooth.spec 张量积平滑构造函数
- R smooth.construct.t2.smooth.spec 张量积平滑构造函数
- R smooth.terms GAM 中的平滑术语
- R scat 用于重尾数据的 GAM 缩放 t 系列
- R slanczos 计算对称矩阵的截断特征分解
- R single.index 具有 mgcv 的单指数模型
- R sp.vcov 从 (RE)ML GAM 拟合中提取平滑参数估计器协方差矩阵
- R shash Sinh-arcsinh 位置比例和形状模型族
- R s 在 GAM 公式中定义平滑
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Prediction/Construction wrapper functions for GAM smooth terms。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。