包裹" MuMin"安装在R

时间:2017-05-24 19:05:04

标签: r predict nlme mumin

我在使用predict.gls时收到错误消息" MuMIn"已安装。

以下(例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)会产生错误消息,即使库(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

有谁知道为什么会这样?使用&#39;预测&#39;时似乎不兼容。何时安装MuMIn

有趣的是,以下(例如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"

但是,我已经读过,不建议使用&#39; nlme ::: predict.gls&#39;作为&#39; :::&#39;可能有风险&#39;因为它可以访问不能直接使用的内部函数。

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

平台x86_64-w64-mingw32
拱x86_64
os mingw32
system x86_64,mingw32
状态
专业3 小4.0 2017年
年 月04日 第21天 svn rev 72570
语言R
version.string R版本3.4.0(2017-04-21) 昵称你愚蠢的黑暗

顺便说一句,我在旧计算机上没有遇到这个问题,这台计算机使用的是旧版本的R.我有一个朋友试试Ex。 2在他的电脑上,它也产生了错误信息。

了解Ex中错误消息的原因。 2,以及如何在不借助Ex的解决方法的情况下解决它。 3,非常感谢!

2 个答案:

答案 0 :(得分:2)

“MuMIn”实现了自己的function getThings_concat2():Array<IThing> { return [...things1(), ...things2()]; } 方法,允许predict.gls,但事实证明它可能有一个错误。如果您在“MuMIn”之后加载“nlme”,将使用“nlme”中的原始方法。

修改:现在已修复此问题。请将R-Forge的MuMIn更新到版本1.16.5: se.fit

答案 1 :(得分:0)

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

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"