我在使用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,非常感谢!
答案 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"