1

安装包“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.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 输出:

platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 4.0
year 2017
month 04
day 21
svn rev 72570
language R
version.string R version 3.4.0 (2017-04-21) 昵称 You Stupid Darkness

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

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

4

2 回答 2

2

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

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

于 2017-05-24T19:59:18.613 回答
0

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

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"
于 2017-05-24T20:48:00.010 回答