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


R plot.gam 默認 GAM 繪圖


R語言 plot.gam 位於 mgcv 包(package)。

說明

采用 gam() 生成的擬合 gam 對象,並在線性預測器的尺度上繪製組成它的組件平滑函數。還可以選擇生成參數模型組件的項圖。

用法

## S3 method for class 'gam'
plot(x,residuals=FALSE,rug=NULL,se=TRUE,pages=0,select=NULL,scale=-1,
         n=100,n2=40,n3=3,theta=30,phi=30,jit=FALSE,xlab=NULL,
         ylab=NULL,main=NULL,ylim=NULL,xlim=NULL,too.far=0.1,
         all.terms=FALSE,shade=FALSE,shade.col="gray80",shift=0,
         trans=I,seWithMean=FALSE,unconditional=FALSE,by.resids=FALSE,
         scheme=0,...)

參數

x

gam() 生成的擬合 gam 對象。

residuals

如果TRUE,則將部分殘差添加到一維平滑圖中。如果FALSE則不添加殘差。如果這是一個長度正確的數組,則將其用作用於生成部分殘差的殘差數組。如果TRUE,則殘差是由(平方根)IRLS 權重加權的 IRLS 迭代的工作殘差,以便在模型正確時它們具有恒定方差。平滑項的部分殘差是通過從模型中刪除相關項而獲得的殘差,同時保留所有其他估計值固定(即該項的估計值加上殘差)。

rug

TRUE 時,繪圖所應用的協變量將在一維平滑的每個圖的底部顯示為地毯圖,並且協變量的位置將繪製為表示二維平滑的等高線圖上的點。當數據集大小 <= 10000 時,NULL 默認將 rug 設置為 TRUE,否則設置為 FALSE

se

當 TRUE(默認)時,上線和下線將以高於和低於繪製的平滑估計值 2 個標準誤差添加到 1 維圖中,而對於 2 維圖,則繪製 +1 和 -1 標準誤差處的表麵輪廓並覆蓋在估計的等值線圖上。如果提供正數,則在計算標準誤差曲線或曲麵時,該數將乘以標準誤差。另請參見下麵的shade

pages

(默認 0)輸出的頁數。例如,如果pages=1,則所有術語都將繪製在一頁上,並自動執行布局。設置為 0 可使例程保留所有圖形設置不變。

select

允許選擇單個模型項的繪圖進行打印。例如如果您隻想繪製第二個平滑項集 select=2 的圖。

scale

設置為 -1(默認)以使每個圖具有相同的 y 軸刻度,設置為 0 表示每個圖具有不同的 y 軸。如果提供ylim,則忽略。

n

每個一維圖使用的點數 - 對於一個漂亮的平滑圖,這需要是平滑的估計自由度的幾倍。默認值 100。

n2

用於對二維輪廓函數進行網格估計的點數的平方根。

n3

顯示 3 維或 4 維函數時使用的麵板數量的平方根。

theta

透視情節角度之一。

phi

另一個視角的劇情角度。

jit

如果您希望一維項的地毯圖發生抖動,請設置為 TRUE。

xlab

如果提供,則這將用作所有圖的 x 標簽。

ylab

如果提供,則這將用作所有圖的 y 標簽。

main

用作繪圖的標題(或 z 軸標簽)(如果提供)。

ylim

如果提供,則這對數字將用作每個圖的 y 限製。

xlim

如果提供,則這對數字將用作每個圖的 x 限製。

too.far

如果大於 0,則用於確定在繪製二維平滑時某個位置距離要繪製的數據太遠。這很有用,因為平滑往往會遠離數據。在決定排除哪些內容之前,數據會縮放到單位正方形中,too.far 是單位正方形內的距離。設置為零可以使大型數據集的繪圖速度更快,但需要注意繪圖的解釋。

all.terms

如果設置為 TRUE ,則還會通過調用 termplot 繪製參數模型組件的部分效果。隻能以這種方式繪製 1 階項。另請參閱警告。

shade

設置為 TRUE 以生成陰影區域作為平滑的置信帶(不適用於使用 termplot 繪製的參數項)。

shade.col

定義用於著色置信帶的顏色。

shift

在繪圖之前添加到每個平滑(在線性預測變量的範圍內)的常數。對於某些診斷或與 trans 有用。

trans

在繪圖之前應用於每個平滑(任何移位之後)的單調函數。不檢查單調性,但默認繪圖限製假定它。當模型僅由單個平滑組成時,shifttrans 有時可用作獲取響應尺度圖的方法。

seWithMean

如果TRUE,則組件平滑顯示為包含總體平均值的不確定性的置信區間。如果FALSE,則不確定性純粹與中心平滑本身相關。如果seWithMean=2,則間隔包括固定效應均值的不確定性(但不包括任何非中心平滑或隨機效應的均值)。 Marra 和 Wood (2012) 表明 TRUE 會帶來更好的覆蓋性能,模擬也表明了這一點。

unconditional

如果TRUE,則使用平滑參數不確定性校正協方差矩陣來計算不確定性帶(如果可用)。否則,頻段將平滑參數視為固定。

by.resids

是否應該為帶有 by 變量的項繪製部分殘差?通常答案是否定的,它們毫無意義。

scheme

為每個繪圖選擇繪圖方案的整數或整數向量。查看具體信息。

...

其他傳遞給繪圖命令的圖形參數。請參閱平滑圖特定選項的詳細信息。

細節

生成默認圖,顯示擬合 GAM 的平滑分量,以及可選的參數項(當這些可以由 termplot 處理時)。

對於平滑項plot.gam 實際上根據平滑的類調用繪圖方法函數。目前 random.effects 、馬爾可夫隨機場 ( mrf )、Spherical.Splinefactor.smooth.interaction 術語有特殊方法(在其幫助文件中記錄),其餘使用下麵說明的默認值。

對於一維平滑圖,每個圖的 x 軸都標有協變量名稱,而 y 軸標有 s(cov,edf) ,其中 cov 是協變量名稱,edf 是估計值(或用戶定義的回歸樣條)平滑的自由度。 scheme == 0 生成一條平滑曲線,其中虛線表示 2 個標準誤差範圍。 scheme == 1 使用陰影區域說明誤差範圍。

對於 scheme==0 ,為二維平滑生成等高線圖,其中 x 軸標記為第一個協變量名稱,y 軸標記為第二個協變量名稱。該圖的主標題類似於 s(var1,var2,edf) ,指示該項是函數的變量,以及該項的估計自由度。當 se=TRUE 時,估計器變異性通過在正負 1 秒處疊加等高線圖來顯示。相對於主要估計。如果 se 是正數,則等值線圖等於正負 se 乘以 s.e。選擇等高線級別是為了嘗試並確保不同地塊的等高線的合理分離,但這並不總是容易實現。請注意,這些圖不能像其他圖那樣進行相同程度的修改。

對於二維平滑,scheme==1 生成透視圖,而 scheme==2 生成帶有重疊輪廓的熱圖,scheme==3 生成灰度熱圖(contour.col 控製輪廓顏色)。

3 個和 4 個變量的平滑顯示為具有重疊輪廓的平鋪熱圖。在 3 個變量的情況下,第三個變量被離散化,並為每個離散值生成前 2 個變量的等值線圖。下排和上排的麵板標有相應的第三個變量值。最低值位於左下角,最高值位於右上角。對於 4 個變量,其中兩個變量被粗略離散化,並為離散值的每個組合生成圖像圖的方形陣列。 smooth 的前兩個參數是用於圖像/輪廓圖的參數,除非張量積項具有 2D 邊,在這種情況下,第一個 2D 邊是繪製圖像/輪廓。 n3控製麵板數量。另請參閱vis.gam

可以通過直接調用termplot(注意使用其terms參數)來獲得對參數項圖的精細控製。

請注意,如果 seWithMean=TRUE ,則置信帶包括總體平均值的不確定性。換句話說,雖然每個平滑都顯示為居中,但獲得的置信帶就好像模型中的所有其他項都被限製為平均值 0(對協變量值取平均值),但相關平滑除外。這似乎更符合大多數用戶在實踐中解釋分量區間的方式,並且通過對 Marra 和 Wood (2012) 中提出的 Nychka (1988) 結果的擴展,也導致區間具有接近名義(頻率)覆蓋概率。這種方法有兩種可能的變體。在默認變體中,額外的不確定性是模型中所有其他項的平均值(固定和隨機,包括非中心平滑)。或者,如果seWithMean=2,則隻有參數固定效應的不確定性包含在額外的不確定性中(當模型包含隨機效應時,後一個選項實際上往往會導致更寬的區間)。

使用 image 的幾種平滑繪圖方法將接受 hcolors 參數,該參數可以是 heat.colors 中記錄的任何內容(在這種情況下,類似 hcolors=rainbow(50) 的內容是合適的),或 grey 函數(在這種情況下,類似的內容)需要hcolors=grey(0:50/50))。另一個選項是contour.col,它將設置某些圖的輪廓顏色。這些選項對於生成灰度圖片而不是彩色圖片非常有用。

有時您可能想要對默認繪圖進行一些小更改,而 plot.gam 的參數不允許您這樣做。在這種情況下,最快的選擇有時是克隆相關平滑的 smooth.constructPredict.matrix 方法,僅修改返回的平滑類(例如 foo.smooth )。然後複製原始類的繪圖方法函數(例如 mgcv:::plot.mgcv.smooth ),修改源代碼以完全按照您的需要進行繪圖,並重命名繪圖方法函數(例如 plot.foo.smooth )。然後,您可以在模型中使用克隆的平滑(例如 s(x,bs="foo") ),它將使用修改後的繪圖函數自動進行繪圖。

該函數的主要目的是生成繪圖的副作用。它還默默地返回用於生成繪圖的數據列表,該列表可用於生成自定義繪圖。

警告

請注意,此函數的行為與 S-PLUS 中的 plot.gam() 不同。

對於適合大型數據集的模型,繪圖可能會很慢。設置rug=FALSE來改善問題。如果它仍然太慢,請設置 too.far=0 ,但請注意不要過度解釋平滑遠離支持數據。

顯示的具有標準誤差輪廓的二維平滑圖無法輕鬆定製。

all.terms 使用 termplot 在擬合模型對象公式的環境中查找原始數據。由於 gam 重置此環境以避免在隱藏環境中包含包含數據的大型已保存模型對象,因此這可能會失敗。

例子

library(mgcv)
set.seed(0)
## fake some data...
f1 <- function(x) {exp(2 * x)}
f2 <- function(x) { 
  0.2*x^11*(10*(1-x))^6+10*(10*x)^3*(1-x)^10 
}
f3 <- function(x) {x*0}

n<-200
sig2<-4
x0 <- rep(1:4,50)
x1 <- runif(n, 0, 1)
x2 <- runif(n, 0, 1)
x3 <- runif(n, 0, 1)
e <- rnorm(n, 0, sqrt(sig2))
y <- 2*x0 + f1(x1) + f2(x2) + f3(x3) + e
x0 <- factor(x0)

## fit and plot...
b<-gam(y~x0+s(x1)+s(x2)+s(x3))
plot(b,pages=1,residuals=TRUE,all.terms=TRUE,shade=TRUE,shade.col=2)
plot(b,pages=1,seWithMean=TRUE) ## better coverage intervals

## just parametric term alone...
termplot(b,terms="x0",se=TRUE)

## more use of color...
op <- par(mfrow=c(2,2),bg="blue")
x <- 0:1000/1000
for (i in 1:3) {
  plot(b,select=i,rug=FALSE,col="green",
    col.axis="white",col.lab="white",all.terms=TRUE)
  for (j in 1:2) axis(j,col="white",labels=FALSE)
  box(col="white")
  eval(parse(text=paste("fx <- f",i,"(x)",sep="")))
  fx <- fx-mean(fx)
  lines(x,fx,col=2) ## overlay `truth' in red
}
par(op)

## example with 2-d plots, and use of schemes...
b1 <- gam(y~x0+s(x1,x2)+s(x3))
op <- par(mfrow=c(2,2))
plot(b1,all.terms=TRUE)
par(op) 
op <- par(mfrow=c(2,2))
plot(b1,all.terms=TRUE,scheme=1)
par(op)
op <- par(mfrow=c(2,2))
plot(b1,all.terms=TRUE,scheme=c(2,1))
par(op)

## 3 and 4 D smooths can also be plotted
dat <- gamSim(1,n=400)
b1 <- gam(y~te(x0,x1,x2,d=c(1,2),k=c(5,15))+s(x3),data=dat)

## Now plot. Use cex.lab and cex.axis to control axis label size,
## n3 to control number of panels, n2 to control panel grid size,
## scheme=1 to get greyscale...

plot(b1,pages=1) 

作者

Simon N. Wood simon.wood@r-project.org

Henric Nilsson henric.nilsson@statisticon.se donated the code for the shade option.

The design is inspired by the S function of the same name described in Chambers and Hastie (1993) (but is not a clone).

參考

Chambers and Hastie (1993) Statistical Models in S. Chapman & Hall.

Marra, G and S.N. Wood (2012) Coverage Properties of Confidence Intervals for Generalized Additive Model Components. Scandinavian Journal of Statistics.

Nychka (1988) Bayesian Confidence Intervals for Smoothing Splines. Journal of the American Statistical Association 83:1134-1143.

Wood S.N. (2017) Generalized Additive Models: An Introduction with R (2nd edition). Chapman and Hall/CRC Press.

也可以看看

gam , predict.gam , vis.gam

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Default GAM plotting。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。