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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。