无法找到函数plot.gam。

3

我正在学习“使用R进行统计学习应用”的教材(ISLR),但在第295页关于广义可加模型(GAM)的实验中遇到了问题。当我运行以下代码时,出现了错误Error in plot.gam(gam1, se = TRUE, col = "red") : could not find function "plot.gam"

library(ISLR)
gam1 = lm(wage ~ ns(year, 4) + ns(age, 5) + education, data=Wage)
par(mfrow=c(1,3))
plot.gam(gam1, se=TRUE, col="red")

这本书说plot.gam应该是通用plot函数的一部分,那么为什么R找不到它?我应该做些什么不同的事情吗?我尝试重新下载带有install.packages('plot', repos='http://cran.us.r-project.org')的绘图库,但没有成功。

这让我感到困惑,因为书上说:

通用的plot()函数识别gam2是gam类的对象,并调用适当的plot.gam()方法。方便的是,即使plot.gam()gam1不是gam类而是lm类,我们仍然可以在它上面使用plot.gam()。图7.11是用以下表达式产生的:

plot.gam(gam1, se=TRUE, col="red")


1
@李哲源 我也尝试了library(gam),但没有帮助。我还清除了我的工作区并重新输入了所有内容。 - brienna
3
我认为你想要安装 mgcv 软件包。 - Esther
使用 library(mgcv),我没有得到相同的错误,但是我得到了 Error in if (se && x$Vp[1, 1] < 0) { : missing value where TRUE/FALSE needed... 这很奇怪,因为书上似乎期望我能够直接使用 plot.gam 而不需要导入任何东西。不过早些时候我被告知要导入 gam - brienna
1
你是指 plot.Gam 吗?请记住,R 是区分大小写的。此外,您可以通过调用 methods(plot) 来检查哪些方法适用于常规的 plot(它是一个函数,而不是一个包)。似乎没有适用于 gam 的方法,所以我不确定为什么书上会这样说。 - Esther
plot.Gam 可以使用!谢谢 - 我不知道 methods(),非常有用。不知道为什么书上能够使用 plot.gam... - brienna
1个回答

9
请使用plot.Gam而不是plot.gam
软件更新了,但书没有跟上。查看gam包的变更日志,我们可以看到在2018年初更改了大小写:

2018-02-06 Trevor Hastie 版本1.15 * 将类“gam”更改为“Gam”,以避免与mgcv(grr!)发生冲突


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接