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