smooth.construct.ad.smooth.spec
位于 mgcv
包(package)。 说明
gam
可以使用一个或两个变量的自适应平滑,通过 s(...,bs="ad",...)
等术语指定。 (gamm
不能使用此类术语 - 如果这是一个问题,请查看包 AdaptFit
。)此类术语的基础是 p-spline(的张量积)或三次回归样条。离散 P-spline 类型惩罚直接应用于基系数,但惩罚本身具有基表示,允许惩罚的强度随协变量而变化。惩罚基础的系数是平滑参数。
调用自适应平滑器时,k
参数指定平滑基础的维度(一维中默认为 40,二维中为 15),而 m
参数指定惩罚基础的维度(一维中默认为 5,二维中为 3) )。对于两个变量的自适应平滑,k
被视为两个边基的维度:可以通过使 k
成为双元素向量来指定不同的边基维度。类似地,在二维情况下,m
是惩罚的两个边际基数的维度,除非它是一个双元素向量,它为每个边际指定不同的基数维度(如果惩罚基数基于薄板样条,则m
直接指定其尺寸)。
默认情况下,P-splines 用于平滑和惩罚基数,但可以通过提供列表作为参数 xt
和指定平滑基数类型的字符向量 xt$bs
来修改。仅"ps"
、"cp"
、"cc"
和"cr"
可用于平滑基础。惩罚基始终是B-spline,或者循环基的循环B-spline。
为该项估计的平滑参数的总数将是惩罚基础的维度。请记住,自适应平滑对数据提出了相当严格的要求。例如,为 200 个数据的单变量平滑设置 m=10
就像估计 10 个平滑参数,每个参数来自长度为 20 的数据系列。对于 2 个变量的平滑,问题尤其严重,其中需要的平滑参数数量获得合理的灵活性,惩罚可以增长得相当快,但它往往需要非常大的平滑基础维度才能很好地利用这种灵活性。简而言之,应谨慎使用自适应平滑。
在实践中,简单地变换平滑协变量通常与使用自适应平滑一样有效。
用法
## S3 method for class 'ad.smooth.spec'
smooth.construct(object, data, knots)
参数
object |
平滑规范对象,通常由术语 |
data |
仅包含该术语所需的数据(包括任何 |
knots |
包含为基础设置提供的任何结的列表 - 与 |
细节
构造函数通常不直接调用,而是由 gam
在内部使用。要用于基础设置,建议使用 smooth.construct2
。
此类不能用作张量积平滑的边际基础,也不能用作 gamm
。
值
1D 情况下类 "pspline.smooth"
或 2D 情况下类 "tensor.smooth"
的对象。
例子
## Comparison using an example taken from AdaptFit
## library(AdaptFit)
require(mgcv)
set.seed(0)
x <- 1:1000/1000
mu <- exp(-400*(x-.6)^2)+5*exp(-500*(x-.75)^2)/3+2*exp(-500*(x-.9)^2)
y <- mu+0.5*rnorm(1000)
##fit with default knots
## y.fit <- asp(y~f(x))
par(mfrow=c(2,2))
## plot(y.fit,main=round(cor(fitted(y.fit),mu),digits=4))
## lines(x,mu,col=2)
b <- gam(y~s(x,bs="ad",k=40,m=5)) ## adaptive
plot(b,shade=TRUE,main=round(cor(fitted(b),mu),digits=4))
lines(x,mu-mean(mu),col=2)
b <- gam(y~s(x,k=40)) ## non-adaptive
plot(b,shade=TRUE,main=round(cor(fitted(b),mu),digits=4))
lines(x,mu-mean(mu),col=2)
b <- gam(y~s(x,bs="ad",k=40,m=5,xt=list(bs="cr")))
plot(b,shade=TRUE,main=round(cor(fitted(b),mu),digits=4))
lines(x,mu-mean(mu),col=2)
## A 2D example (marked, 'Not run' purely to reduce
## checking load on CRAN).
par(mfrow=c(2,2),mar=c(1,1,1,1))
x <- seq(-.5, 1.5, length= 60)
z <- x
f3 <- function(x,z,k=15) { r<-sqrt(x^2+z^2);f<-exp(-r^2*k);f}
f <- outer(x, z, f3)
op <- par(bg = "white")
## Plot truth....
persp(x,z,f,theta=30,phi=30,col="lightblue",ticktype="detailed")
n <- 2000
x <- runif(n)*2-.5
z <- runif(n)*2-.5
f <- f3(x,z)
y <- f + rnorm(n)*.1
## Try tprs for comparison...
b0 <- gam(y~s(x,z,k=150))
vis.gam(b0,theta=30,phi=30,ticktype="detailed")
## Tensor product with non-adaptive version of adaptive penalty
b1 <- gam(y~s(x,z,bs="ad",k=15,m=1),gamma=1.4)
vis.gam(b1,theta=30,phi=30,ticktype="detailed")
## Now adaptive...
b <- gam(y~s(x,z,bs="ad",k=15,m=3),gamma=1.4)
vis.gam(b,theta=30,phi=30,ticktype="detailed")
cor(fitted(b0),f);cor(fitted(b),f)
作者
Simon N. Wood simon.wood@r-project.org
相关用法
- R smooth.construct.cr.smooth.spec GAM 中的惩罚三次回归样条
- R smooth.construct.bs.smooth.spec GAM 中的惩罚 B 样条
- R smooth.construct.sz.smooth.spec GAM 中的约束因子平滑交互
- R smooth.construct.re.smooth.spec GAM 中的简单随机效应
- R smooth.construct.mrf.smooth.spec 马尔可夫随机场平滑
- R smooth.construct.gp.smooth.spec 低阶高斯过程平滑
- R smooth.construct.tp.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.construct GAM 中平滑项的构造函数
- R smooth.info 提供有关平滑规范的额外信息的通用函数
- R smooth.terms GAM 中的平滑术语
- R smooth2random 将平滑转换为适合估计随机效应的形式
- R smoothCon 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大神的英文原创作品 Adaptive smooths in GAMs。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。