5

我正在尝试从多个绘图输出中获取一个绘图。例如

library(mboost); 
mod=gamboost(Ozone~.,data=airquality[complete.cases(airquality),]); 
plot(mod)

上面为每个变量的“部分效应”创建了一个图。lm绘制线性模型 ( )时创建的残差图也是如此。我试图将输出保存在类似于如何ggplot保存 s 的列表中,并且花了几个小时搜索如何仅提取一个图但失败了。有什么建议吗?

至于问题的上下文,我试图将这些图放入一个闪亮的应用程序中,并有可变数量的图显示为输出。

会话信息如下:R 版本 2.15.2 (2012-10-26) 平台:i386-redhat-linux-gnu (32-bit)

4

3 回答 3

5

许多产生多个绘图的函数也有一个参数来选择绘图的一个子集。在它的情况下plot.lmwhich论点。所以说plot(fit, which=1)只会产生一个情节。

您可以查看 mboost 文档以查看该绘图函数是否有类似的参数。

于 2013-06-03T18:03:07.990 回答
2

本质上,@greg-snow 给出了一个合适的解决方案。我将详细说明这一点。

mboost你可以使用

plot(mod, which = "Day")

仅绘制效果Day。当我们使用正则表达式时,您甚至可以使用参数做更多的事情which。例如,在具有线性和平滑效果的模型中,您可以提取所有平滑效果以进行绘图:

airquality$Month <- as.factor(airquality$Month)
mod <- mod <- gamboost(Ozone ~ bbs(Solar.R) + bbs(Wind) + bbs(Temp) + bols(Month) + bbs(Day), data=airquality[complete.cases(airquality),])

## now plot bbs effects, i.e., smooth effects:
par(mfrow = c(2,2))
plot(mod, which = "bbs")

## or the linear effect only
par(mfrow = c(1,1))
plot(mod, which = "bols")

您可以使用名称的任何部分(参见例如names(coef(mod)))来定义要绘制的效果。您还可以使用整数值来定义which要绘制的效果:

plot(mod, which = 1:2)

请注意,这也可用于某些提取系数。例如

coef(mod, which = 1)
coef(mod, which = "Solar")
coef(mod, which = "bbs(Solar.R)") 

都是一样的。有关如何指定的更多信息,which请参阅我们的教程论文(Hofner et al. (2014), Model-based Boosting in R - A Hands-on Tutorial Using the R Package mboost. Computational Statistics, 29:3-35 . DOI 10.1007/s00180-012-0382-5)。coefplot

我们承认这目前没有记录在案,mboost但它在我们的待办事项列表中(参见github 问题 14)。

于 2015-07-24T07:33:24.480 回答
1

(我不熟悉 GAMboost。)

查看?plot.GAMBoost的文档,我看到有一个名为select. 我猜你会将此参数设置为你感兴趣的变量,然后你会得到你想要的单个图。这类似于@GregSnow 注释which中的论点。plot.lm

于 2013-06-03T18:03:50.253 回答