[英]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
問題恰恰在於fm
和vg
存儲為數字而不是因子,因此lmer
嘗試將fm:vg
解釋為序列運算符(請參閱?seq
)而不是交互運算符(請參閱?interaction
)。 您可以:
fm
和vg
轉換為數據幀內的因子( mbb <- transform(mbb,vg=factor(vg),fm=factor(fm))
)[ 從您的設置中不清楚您是否希望vg
和fm
為因子或連續的預測因子......當然,這種區別非常重要......如果你想要它們作為連續的預測因子,那么將它們視為分組目的的因素有點奇怪...... ] 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.