簡體   English   中英

lme4混合模型錯誤

[英]lme4 mixed model error

以下型號有什么問題:

 # 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

問題恰恰在於fmvg存儲為數字而不是因子,因此lmer嘗試將fm:vg解釋為序列運算符(請參閱?seq )而不是交互運算符(請參閱?interaction )。 您可以:

  • fmvg轉換為數據幀內的因子( mbb <- transform(mbb,vg=factor(vg),fm=factor(fm)) )[ 從您的設置中不清楚您是否希望vgfm為因子或連續的預測因子......當然,這種區別非常重要......如果你想要它們作為連續的預測因子,那么將它們視為分組目的的因素有點奇怪...... ]
  • 將交互明確地寫為interaction(fm,vg)
  • 轉換為動態因素( (yr+vg+gen|factor(fm):factor(vg))
  • 使用Jim M.的解決方案

    認為這些都可行,但我必須承認我沒有測試它們。

將交互建模為隨機效應的一種可能解決方案是將交互項添加為mbb數據框中的附加列。

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

然后模型變成了

lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fmvg), data= mbb)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM