plot.gam来自mgcv,函数中的all.terms = TRUE

时间:2017-08-28 12:09:24

标签: r mgcv

我想编写一个函数来估计带有因子变量的gam,并绘制所有变量的结果,包括因子变量。但是,mgcv-package中的绘图函数会引发错误。为什么会出现此错误?如何解决?

library(mgcv)
plot_model <- function(x){
  agam <- gam(mean ~ s(bla) + bla2, data=x)
  plot(agam, pages=1, all.terms = TRUE)
   # here Error in eval(expr, envir, enclos) : object 'x' not found
}
bla <- data.frame(bla=rnorm(20), bla2=sample(letters[1:4], size=20, replace=T), 
                  mean=sample(20))
plot_model(bla)
# Error in eval(expr, envir, enclos) : object 'x' not found 

1 个答案:

答案 0 :(得分:1)

显然,x需要在本地环境中声明,以便plot.gam可以将其用于绘图。您可以按照以下方式使其工作:

library(mgcv)
plot_model <- function(y){
  data <- y
  agam <- mgcv::gam(mean ~ s(bla) + bla2, data=data)
  mgcv::plot.gam(x = agam, pages=1, all.terms = TRUE)
  # here Error in eval(expr, envir, enclos) : object 'x' not found
}
dat <- data.frame(bla=rnorm(20), bla2=sample(letters[1:4], size=20, replace=T), 
                  mean=sample(20))
plot_model(dat)