5

次のモデルの何が問題になっていますか。

 # simulated data yr = 2; vg = 4, fm = 5, gen = 5
    mbb <- data.frame( trait1 = rnorm(200, 15, 4),yr = c(rep (1:2, each = 100)), 
   vg = c(rep(rep(1:4, each =25), 2)), fm = rep(rep(1:5, each = 5), 8), 
    gen = sample(c(1:5), 200, replace = T))
    require(lme4) 
    lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fm:vg), data= mbb)# full model 

次のエラーが発生します:

Error in validObject(.Object) : 
  invalid class "mer" object: Slot Zt must by dims['q']  by dims['n']*dims['s']
In addition: Warning messages:
1: In fm:vg : numerical expression has 200 elements: only the first used
2: In fm:vg : numerical expression has 200 elements: only the first used
4

2 に答える 2

7

問題は、正確にはfmvg因子としてではなく数値として格納されるため、相互作用演算子(を参照)ではなく、シーケンス演算子(を参照)としてlmer解釈しようとすることです。あなたはできる:fm:vg?seq?interaction

  • データフレーム内の因子に変換fmします( )[設定から、因子または連続予測子のどちらするかは明確ではありません...もちろん、区別が非常に重要になります...連続予測子として使用する場合は、次に、それらをグループ化の目的で要素として扱うのは少し奇妙です... ]vgmbb <- transform(mbb,vg=factor(vg),fm=factor(fm))vgfm

  • interaction(fm,vg)その場でのように明示的に相互作用を書く

  • その場で因子に変換する((yr+vg+gen|factor(fm):factor(vg))

  • JimM.のソリューションを使用する

    私はそれらをテストしていないことを認めなければなりませんが、これらはすべてうまくいくと思います。

于 2011-10-25T18:14:37.600 に答える
3

相互作用をランダム効果としてモデル化するための1つの可能な解決策は、相互作用項をmbbデータフレームの追加の列として追加することです。

mbb$fmvg <- with(mbb, interaction(fm,vg, sep=":"))

モデルは次のようになります

lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fmvg), data= mbb)
于 2011-10-25T17:56:57.013 に答える