2011-10-25 7 views
5

lme4混合モデル誤差以下のモデルと間違っている何

# 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 
+0

ランダムな効果のインタラクションビットが好きではないようです。 'gen | fm:vg'を' gen | fm'に変更して実行します。これの意味はまだ分かりません。 –

答えて

7

なります(?interactionを参照してください)。次のことができます。

  • それはあなたがvgfmが要因または連続予測因子になりたいかどうか、あなたのセットアップからはっきりしていない[データフレーム(mbb <- transform(mbb,vg=factor(vg),fm=factor(fm)))内要因にfmvgを変換する...その区別は非常になります
  • ] ...あなたが連続予測因子としてそれらをしたい場合は、もちろん...、それはグループ化の目的のための要因として扱うために少し奇妙だが、重要なのは、その場で interaction(fm,vg)
  • として明示的相互作用を書きますその場で因子に変換する((yr+vg+gen|factor(fm):factor(vg))
  • 利用ジム・M.のソリューション

    私は、私はそれらをテストしていないことを認めざるを得ないが、私は、これらはすべての作業になると思い

3

一つの可能​​な解決策は、追加することですmbbデータフレーム内の追加列としての相互作用項。

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

モデルは、次に、問題は(?seq参照)fmvgを数値としてではなく、因子、およびシーケンス演算子としてfm:vgを解釈するようlmer試みとして格納されていること正確である

lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fmvg), data= mbb) 
関連する問題