【问题标题】:R: Strange errors using lmList from lme4R:使用来自 lme4 的 lmList 的奇怪错误
【发布时间】:2014-04-27 17:04:16
【问题描述】:

我正在阅读this book 关于 R 中的数据分析和图形的内容,我认为当前版本的 lme4 和他们使用的版本之间存在一些问题(我有 2007 和 2010 版本)。我目前的问题涉及这本书的 p340,作者展示了如何使用lmList 提取每个人的斜率。代码如下:

library(lme4) data(Orthodont, package = "nlme") ab <- coef(lmList(distance ~ age|Subject, data=Orthodont))

这应该是相当直截了当的,并且在书中似乎是这样的。但是,我得到以下信息:

Error in eval(expr, envir, enclos) : object 'Subject' not found In addition: Warning message: In Ops.ordered(age, Subject) : '|' is not meaningful for ordered factors

这在三个层面上令人困惑:

  1. 为什么在正畸中却找不到对象?
  2. R 如何知道未找到的变量是有序因子?
  3. 为什么这种回归对有序因子不起作用?有什么区别?

我尝试了一种解决方法并通过str(Orthodont) 检查第一个命令是否确实创建了一个具有模式和类字符的新变量 sub2:

Orthodont$sub2<-as.character(Orthodont$Subject)
ab <- with(Orthodont,coef(lmList(distance ~ age|sub2, data=Orthodont)))

我收到了相同的错误消息:未找到 sub2 并警告说 sub2 是有序因子。

有什么想法吗?

【问题讨论】:

  • @BBolker,使用 nlme::lmList 时问题消失了......
  • 我很欣赏该链接的可复制性,它帮助我了解了更多信息,但它似乎是该书盗版的链接。作为对作者的礼貌,您能否编辑掉链接?

标签: r lme4


【解决方案1】:

这个问题记录在案,诚然不如它应该的那么清楚:来自?lmList

‘data’应该是一个数据框(不是,例如‘nlme’包中的‘groupedData’对象);先用‘as.data.frame’转换数据。

您遇到麻烦而作者没有遇到问题的原因是他们从MEMSS 包中提取了Orthodont 数据(它存储为常规数据框,而不是groupedData 对象)而不是比来自nlme.

由于我现在不记得的原因,自动从groupedData 转换到data.frame(这将是明智的做法)比看起来更难,因为代码的设计方式。

https://stat.ethz.ch/pipermail/r-sig-mixed-models/2013q4/021283.htmlhttps://github.com/lme4/lme4/issues/26 也对此进行了讨论

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多