首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >lme4混合模型错误

lme4混合模型错误
EN

Stack Overflow用户
提问于 2011-10-26 00:59:49
回答 2查看 1.6K关注 0票数 5

以下模型有什么问题:

代码语言:javascript
运行
复制
 # 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 

我收到以下错误:

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-26 02:14:38

问题恰恰在于fmvg被存储为数字,而不是因子,因此lmer试图将fm:vg解释为序列操作符(请参见?seq),而不是交互操作符(请参见?interaction)。您可以:

  • fmvg转换为数据框内的因子(mbb <- transform(mbb,vg=factor(vg),fm=factor(fm)))从您的设置中尚不清楚您希望vgfm是因子还是连续预测因子...当然,这种区别是非常重要的。如果你想要它们作为连续的预测因子,那么为了分组的目的而将它们作为因素来对待是有点奇怪的……

  • 将交互显式地写为interaction(fm,vg) on the fly

即时转换为因子((yr+vg+gen|factor(fm):factor(vg)))

  • 使用Jim M.的解决方案

我认为这些都会起作用,尽管我必须承认我还没有测试过它们。

票数 7
EN

Stack Overflow用户

发布于 2011-10-26 01:56:57

将交互建模为随机效应的一种可能的解决方案是将交互项作为附加列添加到mbb数据帧中。

代码语言:javascript
运行
复制
mbb$fmvg <- with(mbb, interaction(fm,vg, sep=":"))

然后模型就变成了

代码语言:javascript
运行
复制
lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fmvg), data= mbb)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7892944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档