0

glmulti私は、関心のある変数のモデル平均推定値と相対的な重要度の値を取得するために使用しています。実行glmulti中、アプリオリな知識に基づいて、すべての変数と相互作用が含まれる候補モデルを指定しました (以下のコードを参照)。

glmutliモデルを実行した後、関数summary()とを使用して結果を調べましたweightable()。私には理解できない結果で、多くの奇妙なことが起こっているようです。

まず、lme4 glmer()関数を使用して候補モデルを実行すると、AIC 値 2086 が得られます。glmulti の出力では、この候補モデル (まったく同じ式) の AIC 値 (2107) が低く、その結果として表示されます。すべての潜在的なモデルのリスト (weigtable() 関数で取得) の 26 のうち 8 番目の位置にあります。

この問題の原因と思われるのは、level=2指定されているにもかかわらず、logArea:Habitat インタラクションが候補モデルから削除されていることです。この関数summary(output_new@objects[[8]]) は、 で提供される式とは異なる式 (logArea:Habitat 相互作用変数なし) を提供しweightable()ます。これは、候補モデルの AIC 値が で取得した値と同じではない理由を説明してlme4いますが、相互作用変数 logArea:Habitat が式から欠落している理由がわかりません。他の可能なモデルでも同じことが起こっています。2 つ以上の相互作用を持つすべてのモデルで、1 つの相互作用がドロップされているようです。

何が起こっているのか説明できる人はいますか?どんな助けでも大歓迎です!

ベスト、ロバート

注: データのサブセット ( https://drive.google.com/open?id=1rc0Gkp7TPdnhW6Bw87FskL5SSNp21qxl ) を作成し、モデルの実行時間を短縮するために変数を削除して候補モデルを単純化しました。(問題はそのままです)

     newdat <- Data_ommited2[, c("Presabs","logBodymass", "logIsolation", "Matrix", "logArea", "Protection","Migration", "Habitat", "Guild", "Study","Species", "SpeciesStudy")] 

     glmer.glmulti <- function (formula, data, random, ...) {
     glmer(paste(deparse(formula), random), data = data, family=binomial(link="logit"),contrasts=list(Matrix=contr.sum, Habitat=contr.treatment, Protection=contr.treatment, Guild=contr.sum),glmerControl(optimizer="bobyqa", optCtrl = list(maxfun = 100000)))
     }

   output_new <- glmulti(y = Presabs ~  Matrix  + logArea*Protection + logArea*Habitat,
    data = sampledata,
    random = '+(1|Study)+(1|Species)+(1|SpeciesStudy)',
    family = binomial,
    method = 'h',
    level=2,
    marginality=TRUE,
    crit = 'aic',
    fitfunc = glmer.glmulti,
    confsetsize = 26)

    print(output_new)

    summary(output_new)

    weightable(output_new)
4

1 に答える 1