【问题标题】:predict.gls fails when the package "MuMin" is installed in R在 R 中安装包“MuMin”时 predict.gls 失败
【发布时间】:2017-05-24 19:05:03
【问题描述】:

在安装包“MuMIn”时使用 predict.gls 时收到错误消息。

以下(示例 1)有效:

### EX. 1

library(nlme)

# example code from https://stat.ethz.ch/R-manual/R-devel/library/nlme/html/predict.gls.html

fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary,
           correlation = corAR1(form = ~ 1 | Mare))
newOvary <- data.frame(Time = c(-0.75, -0.5, 0, 0.5, 0.75))
predict(fm1, newOvary)

# [1]  9.441686 13.116003 11.316793 13.116003 14.991110
# attr(,"label")
# [1] "Predicted values"

但是,以下(示例 2)会产生错误消息,即使 library(MuMIn) 行是与示例的唯一区别。 1:

### EX. 2

library(nlme)
library(MuMIn) # (This is the only thing different from Ex. 1)

# example code from https://stat.ethz.ch/R-manual/R-devel/library/nlme/html/predict.gls.html

fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary,
           correlation = corAR1(form = ~ 1 | Mare))
newOvary <- data.frame(Time = c(-0.75, -0.5, 0, 0.5, 0.75))
predict(fm1, newOvary)

# Error in eval(predvars, data, env) : object 'follicles' not found

有人知道为什么会这样吗?安装 MuMIn 时使用 'predict' 似乎不兼容

有趣的是,以下直接调用 predict.gls 的(示例 3)将其恢复为正常工作:

### EX. 3

library(nlme)
library(MuMIn) 

# example code from https://stat.ethz.ch/R-manual/R-devel/library/nlme/html/predict.gls.html

fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary,
       correlation = corAR1(form = ~ 1 | Mare))
newOvary <- data.frame(Time = c(-0.75, -0.5, 0, 0.5, 0.75))
nlme:::predict.gls(fm1, newOvary) # (This is the only thing different from Ex. 2)

# [1]  9.441686 13.116003 11.316793 13.116003 14.991110
# attr(,"label")
# [1] "Predicted values"

但是,我读到不建议使用“nlme:::predict.gls”,因为“:::”可能是“有风险的”,因为它访问的内部函数并不意味着直接可用。

这是我当前的 R.version 输出:

平台 x86_64-w64-mingw32
拱 x86_64
操作系统 mingw32
系统 x86_64、mingw32
状态
专业 3
次要 4.0
2017 年
04月
第 21 天
svn 版本 72570
语言 R
version.string R 版本 3.4.0 (2017-04-21) 昵称 你 愚蠢的 黑暗

顺便说一句,我的旧电脑上没有这个问题,它使用的是旧版本的 R。我有一个朋友尝试了 Ex。 2 在他的电脑上,它也产生了一条错误消息。

对 Ex. 中错误消息原因的任何见解。 2,以及如何在不求助于 Ex 中的解决方法的情况下修复它。 3,不胜感激!

【问题讨论】:

    标签: r predict nlme mumin


    【解决方案1】:

    “MuMIn”实现了自己的predict.gls 方法,该方法允许se.fit,但事实证明它可能有一个错误。如果您“MuMIn”之后加载“nlme”,则将使用“nlme”中的原始方法。

    编辑:现在已修复。请从 R-Forge 将 MuMIn 更新到版本 1.16.5: install.packages("MuMIn", repos="http://R-Forge.R-project.org")

    【讨论】:

    • 谢谢@KamilBartoń,使用您的方法(在“编辑”中)更新 MuMIn 起到了作用,它现在似乎可以工作了。
    【解决方案2】:

    绕过该问题的一种方法是使用函数MuMIn:::predict.gls 将响应变量follicles 添加到newdata 数据集。您可以为响应变量输入随机值,它们不会用于计算。

    library(nlme)
    library(MuMIn)
    
    fm1 <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), Ovary,
                       correlation = corAR1(form = ~ 1 | Mare))
    newOvary <- data.frame(Time = c(-0.75, -0.5, 0, 0.5, 0.75), follicles=rep(1,5))
    predict(fm1, newOvary)
    
    ############
    [1]  9.441686 13.116003 11.316793 13.116003 14.991110
    attr(,"label")
    [1] "Predicted values"
    

    这些估计与nlme:::predict.gls给出的完全相同

    nlme:::predict.gls(fm1)
    [1]  9.441686 13.116003 11.316793 13.116003 14.991110
    attr(,"label")
    [1] "Predicted values"
    

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 2016-01-26
      • 2020-01-14
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多