2017-08-28 7 views
2

因子変数を持つgamを推定し、因子変数を含むすべての変数の結果をプロットする関数を記述したいと思います。しかし、mgcvパッケージのプロット関数はエラーを投げます。なぜこのエラーが発生し、どのように解決できますか?plot.gam from mgcv with all.terms =関数内のTRUE

どうやら
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

は、xplot.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) 
+0

データセットデータを呼び出すと機能しますが、xまたはx2と呼び出すと機能しません。なぜそれはそれのようなものですか?私はそれをデータと呼ぶと、最初の行(data < - y)を省略したときにも機能します。 – tover

+1

これは明らかに因子共変量に対してのみ失敗します。奇妙な... –

+1

mgcvは文字を要素に強制しません。あなたはそれに因子変数を供給する必要があります。また、おそらく 'agam < - eval(bquote(mgcv :: gam(mean〜s(bla)+ bla2、data =。(y))))'を使用します。 – Roland

関連する問題