如果您仍然收到此消息,则需要将您的mgcv
和gam
包更新到最新版本。gam
2018 年 2 月对包进行了重大更改:找不到函数 plot.gam。这意味着,由gam
包安装的 GAM 现在具有“Gam”类,即使mgcv
加载了包,plot
也不会选择mgcv::plot.gam
绘制它。
但是,在 R 会话中同时拥有这两个包仍然是不安全的。所以还是强烈推荐以下2016年提出的建议。
建议
使用这个玩具功能来检查 R 会话是否可以运行 GAM 分析可能是个好主意。
GAM_status <- function () {
if (all(c("gam", "mgcv") %in% .packages())) print("Not OK")
else print("OK")
}
nsdf
是严格自由度的个数,一个专门用在的术语mgcv
。正如您所提到的:mgcv
是plot.gam
函数的来源。
问题是你的 R 会话中同时有gam
两个mgcv
不兼容的包。你适合你gam.mod
的gam::gam
,然后用 绘制模型mgcv::plot.gam
。
请注意,通常情况下使用的::
内容将在此处失效。通常当两个包有一些inter-masked函数时,这::
是补救措施。但是,对于mgcv
和gam
,这是完全不可能的。所以我的建议是,如果您使用gam
,请不要mgcv
在您的 R 会话中触摸,反之亦然。
所以,我开始一个新的 R 会话,并执行以下操作,一切都很好!
library(gam)
library(ISLR) # contains the Wage dataset used here
gam.mod <- gam(wage ~ s(year, 4) + s(age, 5) + education, data = Wage)
par(mfrow = c(2,2)); plot(gam.mod)

谢谢您的回答。我从来没有真正加载过mgcv
,我只是假设它是gam
. 我开始了一个新的 R 会话,您提供的代码有效。我发现它实际上car
是导致相同问题的库。
mgcv
并且gam
不相互依赖,但由于mgcv
比 更受欢迎gam
,许多包都依赖于mgcv
,例如car
:
car: Companion to Applied Regression
Functions and Datasets to Accompany J. Fox and S. Weisberg, An R Companion to
Applied Regression, Second Edition, Sage, 2011.
Version: 2.1-3
Depends: R (≥ 3.2.0)
Imports: MASS, mgcv, nnet, pbkrtest (≥ 0.4-4), quantreg, grDevices, utils,
stats, graphics
注意“Imports”字段,library(car)
将同时加载这些包。