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 |
由 |
residuals |
如果 |
rug |
當 |
se |
當 TRUE(默認)時,上線和下線將以高於和低於繪製的平滑估計值 2 個標準誤差添加到 1 維圖中,而對於 2 維圖,則繪製 +1 和 -1 標準誤差處的表麵輪廓並覆蓋在估計的等值線圖上。如果提供正數,則在計算標準誤差曲線或曲麵時,該數將乘以標準誤差。另請參見下麵的 |
pages |
(默認 0)輸出的頁數。例如,如果 |
select |
允許選擇單個模型項的繪圖進行打印。例如如果您隻想繪製第二個平滑項集 |
scale |
設置為 -1(默認)以使每個圖具有相同的 y 軸刻度,設置為 0 表示每個圖具有不同的 y 軸。如果提供 |
n |
每個一維圖使用的點數 - 對於一個漂亮的平滑圖,這需要是平滑的估計自由度的幾倍。默認值 100。 |
n2 |
用於對二維輪廓函數進行網格估計的點數的平方根。 |
n3 |
顯示 3 維或 4 維函數時使用的麵板數量的平方根。 |
theta |
透視情節角度之一。 |
phi |
另一個視角的劇情角度。 |
jit |
如果您希望一維項的地毯圖發生抖動,請設置為 TRUE。 |
xlab |
如果提供,則這將用作所有圖的 x 標簽。 |
ylab |
如果提供,則這將用作所有圖的 y 標簽。 |
main |
用作繪圖的標題(或 z 軸標簽)(如果提供)。 |
ylim |
如果提供,則這對數字將用作每個圖的 y 限製。 |
xlim |
如果提供,則這對數字將用作每個圖的 x 限製。 |
too.far |
如果大於 0,則用於確定在繪製二維平滑時某個位置距離要繪製的數據太遠。這很有用,因為平滑往往會遠離數據。在決定排除哪些內容之前,數據會縮放到單位正方形中, |
all.terms |
如果設置為 |
shade |
設置為 |
shade.col |
定義用於著色置信帶的顏色。 |
shift |
在繪圖之前添加到每個平滑(在線性預測變量的範圍內)的常數。對於某些診斷或與 |
trans |
在繪圖之前應用於每個平滑(任何移位之後)的單調函數。不檢查單調性,但默認繪圖限製假定它。當模型僅由單個平滑組成時, |
seWithMean |
如果 |
unconditional |
如果 |
by.resids |
是否應該為帶有 |
scheme |
為每個繪圖選擇繪圖方案的整數或整數向量。查看具體信息。 |
... |
其他傳遞給繪圖命令的圖形參數。請參閱平滑圖特定選項的詳細信息。 |
細節
生成默認圖,顯示擬合 GAM 的平滑分量,以及可選的參數項(當這些可以由 termplot
處理時)。
對於平滑項plot.gam
實際上根據平滑的類調用繪圖方法函數。目前 random.effects
、馬爾可夫隨機場 ( mrf
)、Spherical.Spline
和 factor.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.construct
和 Predict.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 place.knots 通過協變量值自動均勻放置一組結
- R pdTens 實現張量積平滑的 pdMat 類的函數
- R pcls 懲罰約束最小二乘擬合
- R predict.bam 根據擬合的大加法模型進行預測
- R pdIdnot 單位矩陣倍數的溢出證明 pdMat 類
- R polys.plot 繪製定義為多邊形的地理區域
- R print.gam 打印廣義加法模型對象。
- R predict.gam 根據擬合的 GAM 模型進行預測
- R pen.edf 提取與遊戲擬合中每個懲罰相關的有效自由度
- R psum.chisq 評估 c.d.f.卡方偏差的加權和
- R vcov.gam 從 GAM 擬合中提取參數(估計器)協方差矩陣
- R gam.check 擬合 gam 模型的一些診斷
- R null.space.dimension TPRS 未懲罰函數空間的基礎
- R gam.reparam 尋找平方根懲罰的穩定正交重新參數化。
- R extract.lme.cov 從 lme 對象中提取數據協方差矩陣
- R scat 用於重尾數據的 GAM 縮放 t 係列
- R choldrop 刪除並排名第一 Cholesky 因子更新
- R smooth.construct.cr.smooth.spec GAM 中的懲罰三次回歸樣條
- R bandchol 帶對角矩陣的 Choleski 分解
- R gam.side GAM 的可識別性邊條件
- R cox.ph 附加 Cox 比例風險模型
- R mgcv.parallel mgcv 中的並行計算。
- R gamm 廣義加性混合模型
- R Predict.matrix GAM 中平滑項的預測方法
- R Predict.matrix.soap.film 皂膜光滑度預測矩陣
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Default GAM plotting。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。