r - 防止 plot.gam 生成图形

标签 r gam mgcv

说,我有一个看起来像这样的 GAM:

# Load library
library(mgcv)

# Load data
data(mtcars)

# Model for mpg
mpg.gam <- gam(mpg ~ s(hp) + s(wt), data = mtcars)

现在,我想使用 ggplot2 绘制 GAM .所以,我用 plot.gam生成我需要的所有信息,如下所示:

foo <- plot(mpg.gam)

这也会产生不需要的图形。 (是的,我意识到我在提示绘图函数会绘制一些东西......)当使用 visreg 时同样,我只需指定 plot = FALSE压制数字,但plot.gam好像没有这个选项。我的第一个想法可能是invisible会完成这项工作(例如 invisible(foo <- plot(mpg.gam)) ),但这似乎不起作用。有没有一种简单的方法可以在不将不需要的图形输出到文件的情况下做到这一点?

最佳答案

好的,所以我在发布此消息 5 分钟后终于想通了。有一个选项可以选择要绘制的术语(例如,select = 1 是第一个术语,select = 2 是第二个),尽管默认行为是绘制所有条款。但是,如果我使用 select = 0 它不会绘制任何内容并且不会给出错误,但会返回完全相同的信息。看看吧:

# Load library
library(mgcv)

# Load data
data(mtcars)

# Model for mpg
mpg.gam <- gam(mpg ~ s(hp) + s(wt), data = mtcars)

# Produces figures for all terms
foo1 <- plot(mpg.gam)

# Doesn't produce figures
foo2 <- plot(mpg.gam, select = 0)

# Compare objects
identical(foo1, foo2)

[1] TRUE

棒棒哒!

关于r - 防止 plot.gam 生成图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46345546/

相关文章:

r - mgcv:从 GAM 模型中提取 `tp` 平滑的结位置

r - 如何检查具有负二项分布的 GAM 中的过度分散?

r - 在 mgcViz 图中结合多个簇的 gam 平滑

r - 是否可以用ggplot2绘制gam拟合的平滑分量?

r - 将 SAME markdown 的多个实例编译为一个 pdf

c++ - g++ ld 找不到 x86_64 架构的 RInside 符号

r - 使用 split 函数按因子对数据帧进行分组,大型数据帧的替代方案

r - 问:mgcv::gam() 对系数有限制

r - 在 map 函数中迭代应用 ggplot 函数

r - 为什么来自mgcv的bam对于某些数据比较慢?