smooth.construct.sos.smooth.spec
位于 mgcv
包(package)。 说明
gam
可以通过 s(la,lo,bs="sos",m=2,k=100)
等术语在球体上使用各向同性平滑。这样的平滑必须恰好有 2 个参数。第一个为纬度(以度为单位),第二个为经度(以度为单位)。 m
(默认为 0)是 -1 到 4 范围内的整数,用于确定所使用的惩罚顺序。对于 m>0
, (m+2)/2
是惩罚顺序,而 m=2
相当于通常的二阶导数惩罚。 m=0
表示在球体上使用二阶样条线,由 Wendelberger (1981) 方法计算。根据 Jean Duchon 未发表的建议,m = -1
导致使用 Duchon.spline
(m=2 且 s=1/2)。
k
(默认 50)是基本尺寸。
用法
## S3 method for class 'sos.smooth.spec'
smooth.construct(object, data, knots)
## S3 method for class 'sos.smooth'
Predict.matrix(object, data)
参数
object |
平滑的规范对象,通常由术语 |
data |
仅包含该术语所需的数据(包括任何 |
knots |
包含为基础设置提供的任何结的列表 - 与 |
细节
对于 m>0
,此处实现的平滑基于 Wahba (1981) 球体上的伪样条(1982 年对表 1 进行了更正,但该更正在 A 的定义中存在印刷错误 — 中给出的 A 1981 年的论文是正确的)。对于m=0
(默认),则使用球体上的二阶样条,它类似于二维中的二阶薄板样条:计算基于 Wendelberger,1981 年的第 4 章。最佳低阶近似通过以下方式获得正是 Wood (2003) 中给出的方法。对于 m = -1
,使用 Duchon (1977) 中讨论的一般类型的平滑:球体嵌入 3D 欧几里得空间中,但平滑采用基于二阶导数的惩罚(因此,当平滑参数局部趋于零时,我们恢复切线空间上的 "normal" 薄板样条线)。这是 Jean Duchon 未发表的建议。 m = -2
相同,但具有一阶导数惩罚。
请注意,无论惩罚的阶数如何,惩罚的零空间始终是球体上常数函数的空间。
这个类有一个plot方法,有3种方案。 scheme==0
绘制球体的一个半球,投影到一个圆上。绘图球体的北极位于顶部,0 度子午线沿着绘图的中间延伸并朝向观察者。通过在观察球体坐标中指定其极点位置,平滑球体在绘图球体内旋转。 theta
、 phi
给出绘图球内平滑球极点的经度和纬度(在绘图球坐标中)。 (您可以将平滑球体可视化为一个球体,在固定的透明绘图球体内自由旋转。)平滑值由覆盖有等高线图的热图显示。还绘制了纬度、经度网格线。
scheme==1
与 scheme==0
相同,但为黑白,没有图像图。 scheme>1
调用默认绘图方法,scheme
减 2。
值
类 "sos.smooth"
的对象。除了 smooth.construct
下记录的平滑类的常见元素之外,该对象还将包含:
Xu |
此平滑的唯一协变量组合的矩阵(通过首先删除重复位置来构建基础)。 |
UZ |
将降阶样条的参数映射回完整样条的参数的矩阵。 |
例子
require(mgcv)
set.seed(0)
n <- 400
f <- function(la,lo) { ## a test function...
sin(lo)*cos(la-.3)
}
## generate with uniform density on sphere...
lo <- runif(n)*2*pi-pi ## longitude
la <- runif(3*n)*pi-pi/2
ind <- runif(3*n)<=cos(la)
la <- la[ind];
la <- la[1:n]
ff <- f(la,lo)
y <- ff + rnorm(n)*.2 ## test data
## generate data for plotting truth...
lam <- seq(-pi/2,pi/2,length=30)
lom <- seq(-pi,pi,length=60)
gr <- expand.grid(la=lam,lo=lom)
fz <- f(gr$la,gr$lo)
zm <- matrix(fz,30,60)
require(mgcv)
dat <- data.frame(la = la *180/pi,lo = lo *180/pi,y=y)
## fit spline on sphere model...
bp <- gam(y~s(la,lo,bs="sos",k=60),data=dat)
## pure knot based alternative...
ind <- sample(1:n,100)
bk <- gam(y~s(la,lo,bs="sos",k=60),
knots=list(la=dat$la[ind],lo=dat$lo[ind]),data=dat)
b <- bp
cor(fitted(b),ff)
## plot results and truth...
pd <- data.frame(la=gr$la*180/pi,lo=gr$lo*180/pi)
fv <- matrix(predict(b,pd),30,60)
par(mfrow=c(2,2),mar=c(4,4,1,1))
contour(lom,lam,t(zm))
contour(lom,lam,t(fv))
plot(bp,rug=FALSE)
plot(bp,scheme=1,theta=-30,phi=20,pch=19,cex=.5)
作者
Simon Wood simon.wood@r-project.org, with help from Grace Wahba (m=0 case) and Jean Duchon (m = -1 case).
参考
Wahba, G. (1981) Spline interpolation and smoothing on the sphere. SIAM J. Sci. Stat. Comput. 2(1):5-16
Wahba, G. (1982) Erratum. SIAM J. Sci. Stat. Comput. 3(3):385-386.
Wendelberger, J. (1981) PhD Thesis, University of Winsconsin.
Wood, S.N. (2003) Thin plate regression splines. J.R.Statist.Soc.B 65(1):95-114
也可以看看
相关用法
- R smooth.construct.so.smooth.spec 皂膜平滑剂
- R smooth.construct.sz.smooth.spec GAM 中的约束因子平滑交互
- R smooth.construct.cr.smooth.spec GAM 中的惩罚三次回归样条
- R smooth.construct.bs.smooth.spec GAM 中的惩罚 B 样条
- 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.ad.smooth.spec GAM 中的自适应平滑
- 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.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大神的英文原创作品 Splines on the sphere。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。