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


R smooth.construct.mrf.smooth.spec 马尔可夫随机场平滑


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

说明

对于在离散空间单元上观察到的数据,简单的马尔可夫随机场平滑器有时是合适的。这些函数为 mgcv 提供了一个更平滑的类。有关如何处理缺失数据的区域,请参阅详细信息。

用法

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

参数

object

对于 smooth.construct 方法,平滑规范对象,通常由术语 s(x,...,bs="mrf",xt=list(polys=foo)) 生成。 x 是一个为地理区域提供标签的因子变量,xt 参数是必需的:请参阅详细信息。对于 Predict.Matrix 方法,由 smooth.construct 方法生成的类 "mrf.smooth" 的对象。

data

仅包含该术语所需的数据(包括任何 by 变量)的列表,其名称对应于 object$term (和 object$by )。 by 变量是最后一个元素。

knots

如果地理区域多于观察到的数据,则此参数用于提供所有区域(观察到的和未观察到的)的标签。

细节

使用一组区域标签和区域的邻域结构来定义一组离散区域上的马尔可夫随机场平滑。平滑的协变量是与每个观察值相对应的区域标签的向量。该协变量应该是一个因子,或者能够被强制为一个因子。

邻域结构在 xt 参数中提供给 s 。这必须至少包含元素 polysnbpenalty 之一。

多聚体

包含定义地理区域的多边形。它是一个包含与地理区域一样多的元素的列表。 names(polys) 必须以任何顺序对应于平滑参数的级别(即,它给出区域标签)。 polys[[i]] 是一个 2 列矩阵,其行指定定义第 i 个区域边界的多边形的顶点。边界可以由多个闭环组成:这些闭环必须由 NA 行分隔。另一个多边形内的多边形被视为孔。任何 polys[[i]] 中的第一个多边形不应是洞。 columb.polys 提供了该结构的示例(出于说明目的,其第二个元素中包含一个人造孔)。任何具有重复名称的列表元素都会组合成一个 NA 分隔的矩阵。

如果没有 polys 对象,则无法绘制平滑图。

如果 polys 是提供的 xt 的唯一元素,则自动计算邻域结构。要算作邻居,多边形必须完全共享多个顶点之一。

NB

是定义邻域结构的命名列表。 names(nb) 必须对应于平滑协变量的级别(即区域标签),但可以按任何顺序。 nb[[i]] 是一个数字向量,索引第 i 个区域的邻居(并且不应包括 i )。所有索引均相对于 nb 本身,但可以使用 names(nb) 进行转换。请参阅示例代码。作为替代方案,每个 nb[[i]] 可以是邻居名称的数组,但这些将在内部转换为数字索引数组。

如果未提供penalty,则会从此列表中自动计算。惩罚矩阵的第 i 行在任何地方都为零,除了第 i 列(其中包含第 i 个地理区域的邻居数量)以及与这些地理邻居对应的列(每个列包含 -1)。

惩罚

如果提供,则将其用作惩罚矩阵。它应该是半正定的。其行和列名称应与协变量的级别相对应。

如果未提供基本维度,则构造函数会生成满秩 MRF,其中包含每个地理区域的系数。否则,根据 Wood (2017) 第 5.4.2 节中给出的参数化截断,获得低秩近似。参见 Wood(2017 年,第 5.8.1 节)。

请注意,此类的平滑具有内置绘图方法,并且实用函数 in.out 对于处理离散区域数据非常有用。绘图方法有两种方案,scheme==0 是彩色,scheme==1 是灰度。

对于有区域没有数据的情况需要特殊处理。您应该在模型拟合函数中设置 drop.unused.levels=FALSE gambamgamm ,首先确保任何固定效应因子不包含未观察到的水平。还要确保设置基本维度以确保系数总数小于观测值数量。

"mrf.smooth" 的对象或将 MRF 系数平滑映射到 data 中列出的区域的预测的矩阵。

例子

library(mgcv)
## Load Columbus Ohio crime data (see ?columbus for details and credits)
data(columb)       ## data frame
data(columb.polys) ## district shapes list
xt <- list(polys=columb.polys) ## neighbourhood structure info for MRF
par(mfrow=c(2,2))
## First a full rank MRF...
b <- gam(crime ~ s(district,bs="mrf",xt=xt),data=columb,method="REML")
plot(b,scheme=1)
## Compare to reduced rank version...
b <- gam(crime ~ s(district,bs="mrf",k=20,xt=xt),data=columb,method="REML")
plot(b,scheme=1)
## An important covariate added...
b <- gam(crime ~ s(district,bs="mrf",k=20,xt=xt)+s(income),
         data=columb,method="REML")
plot(b,scheme=c(0,1))

## plot fitted values by district
par(mfrow=c(1,1))
fv <- fitted(b)
names(fv) <- as.character(columb$district)
polys.plot(columb.polys,fv)

## Examine an example neighbourhood list - this one auto-generated from
## 'polys' above.

nb <- b$smooth[[1]]$xt$nb 
head(nb) 
names(nb) ## these have to match the factor levels of the smooth
## look at the indices of the neighbours of the first entry,
## named '0'...
nb[['0']] ## by name
nb[[1]]   ## same by index 
## ... and get the names of these neighbours from their indices...
names(nb)[nb[['0']]]
b1 <- gam(crime ~ s(district,bs="mrf",k=20,xt=list(nb=nb))+s(income),
         data=columb,method="REML")
b1 ## fit unchanged
plot(b1) ## but now there is no information with which to plot the mrf

作者

Simon N. Wood simon.wood@r-project.org and Thomas Kneib (Fabian Scheipl prototyped the low rank MRF idea)

参考

Wood S.N. (2017) Generalized additive models: an introduction with R (2nd edition). CRC.

也可以看看

in.out , polys.plot

相关用法


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