predict.gls 在 R 中安装包 "MuMin" 时失败

predict.gls fails when the package "MuMin" is installed in R

安装软件包 "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"

但是,下面的 (Ex. 2) 会产生一条错误消息,即使 library(MuMIn) 行是与 Ex. 的唯一区别。 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'似乎不​​兼容

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

### 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',因为 ':::' 可以是 'risky',因为它访问的是不能直接使用的内部函数。

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

平台x86_64-w64-mingw32
拱门 x86_64
osmingw32
系统 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、将不胜感激!

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

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

绕过该问题的一种方法是使用函数 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"