【问题标题】:Can plot interaction means for nlme fit, but not for lme4可以为 nlme 拟合绘制交互均值,但不适用于 lme4
【发布时间】:2015-07-27 12:55:40
【问题描述】:

使用这个虚拟数据集:

dummy.data <- data.frame(vaccinated = factor(rep(c("yes", "no"), each = 64)),
  infected = factor(rep(c("yes", "no"), each = 32)),
  animal = factor(rep(1:16, each = 8)),
  tissue = factor(c("blood", "liver", "kidney", "brain")),
  value = runif(128)
  )

这行得通:

library("nlme")
nlme.model <- as.formula(value ~ vaccinated * infected * tissue)
nlme.fit <- lme(fixed = nlme.model, random = ~1|animal, data = dummy.data)
library("phia")
int.nlme <- interactionMeans(nlme.fit)
plot(int.nlme)

但这不是:

library("lme4")  
lmer.model <- as.formula(value ~ vaccinated * infected * tissue + (1 | animal))
lmer.fit <- lmer(formula = lmer.model, data = dummy.data)
library("phia")
int.lmer <- interactionMeans(lmer.fit)
plot(int.lmer)

用后者,我只得到

Error in t.default(M) : argument is not a matrix

来自plot 命令。

当我查看int.nlmeint.lmerstr 时,它们看起来确实不同,但我不知道问题出在哪里。非常感谢任何意见。

【问题讨论】:

    标签: r interaction lmer nlme


    【解决方案1】:

    错误似乎是从phia:::poolse 生成的,因此可以复制:

    > phia:::poolse(int.nlme, "adjusted mean","vaccinated")
    vaccinated
            no        yes 
    0.04483019 0.04483019 
    > phia:::poolse(int.lmer, "adjusted mean","vaccinated")
    Error in t.default(M) : argument is not a matrix
    

    还在挖……

    我认为这是phia 包中的一个错误,它忽略了这一点:

    When writing an R package that uses the Matrix package, why do I have to specify Matrix::t() instead of just t()?

    作为一种变通方法,为了增加令人敬畏,将 int.lmer 的“covmat”属性从 Matrix 类转换为标准 R matrix 类:

    > int.lmer <- interactionMeans(lmer.fit)
    > plot(int.lmer)
    Error in t.default(M) : argument is not a matrix
    > attr(int.lmer, "covmat") = lapply(attr(int.lmer,"covmat"),as.matrix)
    > plot(int.lmer)
    

    然后情节就开始了。

    【讨论】:

    • 感谢您的回复,@Spacedman。据我所知,lmer 拟合的模型属于merMod 类。
    • class(lmer.fit) 给了我"lmerMod",而不是"merMod",虽然inherits(lmer.fit,"merMod") 是TRUE,但我不明白,因为我希望类函数调用包含两者...嗯....
    • 太棒了,@Spacedman,非常感谢!我会给包的维护者发电子邮件。
    • @Spacedman, "lmerMod" 是一个继承自 "merMod"S4
    【解决方案2】:

    我确认这实际上是错误的原因:lmer 的协方差矩阵必须转换为“正常”矩阵才能使绘图起作用。修复这是我的待办事项列表中的优先事项,我想做一系列修复,包括今年夏天的修复。但是,如果有人想为加速更新做出贡献,您可以向 Github 中的存储库提出拉取请求:

    https://github.com/heliosdrm/phia

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多