0

我正在从R v.3.0.2lme的包中运行 -model 。nlme我正在尝试使用 提取模型估计值predict.lme,但它返回错误。这是复制错误的代码:

my.model = lme(fixed = Maxi ~ Time*Origin, random = ~ 1 |Genotype, method = "REML", weights=varPower(), data=dd)
new.my.model <-  data.frame(Origin = c("Ka", "Ka", "La", "La"), Time = c("mor", "eve", "mor", "eve"))
predict(my.model, new.my.model, level = 0:1)
#Error in predict.lme(my.model, new.my.model, level = 0:1) : 
#cannot evaluate groups for desired levels on 'newdata'

这是数据:

dd<-read.table(text="Origin Genotype  Time Maxi
Ka    Ka1     mor 14,59
Ka    Ka1     eve 13,42
Ka    Ka11    mor 14,08
Ka    Ka11    eve 16,29
Ka    Ka15    mor 14,38
Ka    Ka15    eve 14,56
La    La1     mor 17,82
La    La1     eve 13,28
Ka    Ka1     mor 16,44
Ka    Ka1     eve 15,52
Ka    Ka15    mor 13,76
Ka    Ka15    eve 13,55
Ka    Ka1     mor 19,15
Ka    Ka1     eve 19,12
La    La6     mor 10,54
La    La6     mor 11,38
La    La6     eve 10,48
Ka    Ka15    mor 15,25
Ka    Ka15    eve 16,51
La    La1     mor 17,46
La    La1     eve 15,57
Ka    Ka1     mor 16,83
Ka    Ka1     eve 15,63
Ka    Ka15    mor 14,54
Ka    Ka15    eve 15,09
La    La1     mor 11,3
La    La1     eve 11,94", header=TRUE, dec=",")

数据是两个因子(Ka、La),每个因子有两个水平(mor、eve)和随机效应。我正在尝试提取 4 个数据级别的估计值,即 Ka,mor ;卡,伊芙;拉莫尔;拉,伊芙。

首先是在 CV 的另一个环境中被问到,但我在这里被推荐了。

4

1 回答 1

0

如果要忽略随机分量,则设置levels=0:1不正确;你应该只使用levels=0.

new.my.model <- expand.grid(Origin=c("Ka","La"), Time=c("mor","eve"))
( pm<-predict(my.model, new.my.model, level = 0) )

# [1] 15.30408 15.51259 12.99398 12.05721
# attr(,"label")
# [1] "Predicted values"

cbind(new.my.model, pred.mean=pm)

#   Origin Time pred.mean
# 1     Ka  mor  15.30408
# 2     La  mor  12.99398
# 3     Ka  eve  15.51259
# 4     La  eve  12.05721
于 2015-02-24T20:15:58.017 回答