我试图从多个绘图输出中抓取一个图。例如
library(mboost);
mod=gamboost(Ozone~.,data=airquality[complete.cases(airquality),]);
plot(mod)
以上为每个变量的“部分效果”创建了一个图表。对于绘制线性模型(lm
)时创建的残差图也可以这样说。我试图将输出保存在类似于如何保存ggplot
的列表中,并花了几个小时搜索如何只提取一个图但却失败了。有什么建议吗?
至于问题的背景,我正在尝试将这些情节放入一个闪亮的应用程序中,并将可变数量的图表显示为输出。
会话信息如下: R版本2.15.2(2012-10-26) 平台:i386-redhat-linux-gnu(32位)
答案 0 :(得分:4)
许多产生多个图的函数也有一个参数来选择图的子集。在plot.lm
的情况下,它是which
参数。所以说plot(fit, which=1)
只会产生一个情节。
您可以查看mboost文档,看看该绘图函数是否有类似的参数。
答案 1 :(得分: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)
请注意,这也可用于某些提取系数。 E.g。
coef(mod, which = 1)
coef(mod, which = "Solar")
coef(mod, which = "bbs(Solar.R)")
都是一样的。有关如何在which
和coef
中指定plot
的更多信息,请参阅我们的tutorial paper(Hofner等人(2014年),基于模型的增强R - A动手教程使用R包mboost。计算统计,29:3-35。DOI 10.1007 / s00180-012-0382-5)。
我们承认,目前mboost
中没有记录这一点,但它位于我们的待办事项列表中(请参阅github issue 14)。
答案 2 :(得分:1)
(我不熟悉GAMboost。)
查看?plot.GAMBoost的文档,我看到有一个名为select
的参数。我知道你会将这个参数设置为你感兴趣的变量,然后你就会得到你想要的单个图。这与@GregSnow注意到的which
中的plot.lm
参数类似。