【问题标题】:predict.glmer on training set differs with and without newdata训练集上的 predict.glmer 在有和没有新数据的情况下有所不同
【发布时间】:2015-02-05 23:46:39
【问题描述】:

这可能更像是一个错误报告而不是一个问题,但是:为什么显式使用 newdata 参数来预测使用与训练数据相同的数据集有时会产生不同的预测,而不是省略 newdata 参数并使用显式训练数据集?

library(lme4)
packageVersion("lme4") # 1.1.8
m1 <- glmer(myformula, data=X, family="binomial")
p1 <- predict(m1, type="response")
p2 <- predict(m1, type="response", newdata=X)
all(p1==p2) # FALSE

这不仅仅是一个舍入错误。我看到cor(p1,p2) 返回 0.8。

这似乎只适用于有坡度的模型。在下图中,implicit 表示没有新数据的 predict(..., type="response")explicit 表示 predict(..., type="response", newdata=X),其中 X 与训练相同。模型 1 与其他模型的唯一区别是模型 1 只包含(随机)截距,而其他模型具有随机截距和随机斜率。

【问题讨论】:

  • reproducible example 提供示例输入数据会很有帮助,这样我们也可以运行代码进行验证。请务必包括您指定公式的方式。
  • @MrFlick;试试m1 &lt;- lmer(Reaction ~ Days + (Days||Subject), sleepstudy)
  • 嗯,使用newX 而不是newdata,预测结果是相等的
  • @user20650 你是对的! newX 可以解决问题。对于那些在家玩的人,请尝试?lme4::predict.merMod。但是为什么lme4::predict.merMod 对待newdatanewX 的方式不同呢?
  • 对话在github.com/lme4/lme4/issues/279 继续。我很难思考这些平台之间可能有什么不同(FWIW,我不知道预测方法在 1.1-7 和 1.1-8 之间有任何变化......)

标签: r lme4


【解决方案1】:

原来这是predict.merMod 中的一个错误,已在开发版本中修复(2014 年 11 月,作为this Github issue)。如果你安装了编译工具,你可以直接从 Github 安装开发版本

devtools::install_github("lme4/lme4")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2013-02-08
    • 2020-02-19
    • 1970-01-01
    • 2018-01-29
    • 2019-11-26
    相关资源
    最近更新 更多