使用下面的代码说明了该问题。如果你运行它,你会看到 lm 优雅地处理预测,而 gls 不能这样做。这很可能是 predict.gls 中的一个问题,但我不明白为什么。这只是使用因子调用时的一个问题。没有它,一切都很好。我相当有信心 predict.gls 失败,因为新数据集中不存在所有级别。但是, lm 解决了。对我来说,这感觉像是一个错误,但我对 gls 代码的熟练程度不足以确定它。
library(nlme)
# lm example
myfit<-lm(mpg~factor(cyl):disp+hp, data=mtcars)
mypred<-predict(myfit, mtcars[1:3, 1:7])
# gls example
myfit2<-gls(mpg~factor(cyl):disp+hp, data=mtcars)
mypred2<-predict(myfit2, mtcars[1:3, 1:7])
它失败并出现错误:
# Error in X[, names(cf), drop = FALSE] : subscript out of bounds
有任何想法吗?
我的 R.version 输出:
平台 x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 3
minor 0.2
year 2013
month 09
day 25
svn rev 63987
language R
version.string R version 3.0.2 (2013-09-25 ) 昵称飞盘帆船
nlme 包版本:“包 'nlme' 版本 3.1-113”