當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。