2016-07-21 10 views
0

平均化モデル(http://www.inside-r.org/packages/cran/MuMIn/docs/model.avg)を得るためにRでMuMlnパッケージを使用しています。パッケージには、model.avghttp://www.inside-r.org/node/123636)によって返されたオブジェクト専用の関数predictも含まれています。 '平均化' からのみ予測することができます:(AVGM、フル= TRUE)は平均化モデルを使用した誤差とMuMlnでの予測を使った誤差

# Example from Burnham and Anderson (2002), page 100: 
    fm1 <- lm(y ~ X1 + X2 + X3 + X4, data = Cement) 

    ms1 <- dredge(fm1) 

    # obtain model average for AIC delta <2 
    avgm <- model.avg(ms1, subset=delta<2) 

    # predict from the averaged model 
    averaged.full <- predict(avgm, full = TRUE) 

しかし、私はpredict.averagingに

エラーを得続ける:私は記載されている例を挙げてみました、コードは次のようにモデルリストを含むオブジェクト

私が理解していないのは、私が例を辿ってmodel.avgから返されたオブジェクトを使用したからです。何か不足していますか?

答えて

2

オブジェクトをオブジェクトから直接作成する場合は、predictが動作するために必要なコンポーネントモデルは含まれていません。モデルに再び適合するmodel.avg(..., fit = TRUE)を使用することができます。二度のモデルを当てはめる避けるため

は、まずそれに lapply(dredge(..., evaluate = FALSE), eval)、その後 使用model.avg(..., subset = ...)ですべてのモデルのリストを作成することができます。

+0

わかりました。なぜ 'evaluate = FALSE'する必要がありますか?申し訳ありませんが、ベース 'eval'関数に慣れていない人は、代わりにその仕事をしていますか? –

+0

基本的に 'dredge'は' evaluate = FALSE'でコマンドリスト( 'lm(...)')を生成し、 'eval'はそれらを実行します。それ以外の場合、 'dredge'はモデルを一度実行し、' get.models'や 'model.avg(...、fit = TRUE)'はそれらを再度実行します。小さなモデルの数が少ない場合、計算時間に顕著な差はありません。 –