私は、関数内でパッケージmgcv
を使用して複数のGAMに適合させようとしており、モデル選択手順で最も適切なモデルを厳選しています。しかし、私の関数は最初のモデルを実行し、入力データdat
を再度認識していないようです。mgcv :: gamm()とMuMIn :: dredge()のエラー
私はis.data.frameでエラー
エラー(データ)を取得:オブジェクトのDAT 'が見つかりませんが。
は、私は、これはスコープの問題だと思うし、私は助けをhere、およびhereを見てきたが、それを把握することはできません。
コードとデータは、(できれば再現)は以下の通りである: https://github.com/cwaldock1/Help/blob/master/test_gam.csv
library(mgcv)
# Function to fit multiple models
best.mod <- function(dat) {
# Set up control structure
ctrl <- list(niterEM = 0, msVerbose = TRUE, optimMethod="L-BFGS-B")
# AR(1)
m1 <- get.models(dredge(gamm(Temp ~ s(Month, bs = "cc") + s(Date, bs = 'cr') + Year,
data = dat, correlation = corARMA(form = ~ 1|Year, p = 1),
control = ctrl)), subset=1)[[1]]
# AR(2)
m2 <- get.models(dredge(gamm(Temp ~ s(Month, bs = "cc") + s(Date, bs = 'cr') + Year,
data = dat, correlation = corARMA(form = ~ 1|Year, p = 2),
control = ctrl)), subset=1)[[1]]
# AR(3)
m3 <- get.models(dredge(gamm(Temp ~ s(Month, bs = "cc") + s(Date, bs = 'cr') + Year,
data = dat, correlation = corARMA(form = ~ 1|Year, p = 3),
control = ctrl)), subset = 1)[[1]]
### Select best model to work with based on unselective AIC criteria
if(AIC(m2$lme) > AIC(m1$lme)){mod = m1}else{mod = m2}
if(AIC(mod$lme) > AIC(m3$lme)){mod = m3}else{mod = mod}
return(mod$gam)
}
mod2 <- best.mod(dat = test_gam)
任意の助けを大幅に高く評価されるだろう。
おかげで、 コナー
は私が通り実行したときので、エラーが浚渫モデルオブジェクトを呼び出すget.modelsだと思います データ=相関、相関= corARMA(フォーム=〜1 |年、p = 0、年、月、bs = "cc"、k = k.month)+ s 1)、 control = ctrl)) ' このエラーで関数がクラッシュすることはありません。 –