【问题标题】:R: lme, cannot evaluate groups for desired levels on 'newdata'R:lme,无法评估“newdata”上所需级别的组
【发布时间】:2015-02-23 22:22:15
【问题描述】:

我在 R v.3.0.2 上运行包 nlme 中的 lme -model。 我正在尝试使用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 的另一个场合被问到的,但我在这里被推荐了。

【问题讨论】:

  • 您需要在 newdata 参数中为 Genotype 指定一个值,因为 Genotype 在您的模型中。你可以做new.my.model &lt;-data.frame(expand.grid(Origin=c("Ka","La"), Time=c("mor","eve")), Genotype="Ka1")
  • 这将返回:Error in sprintf(ngettext(sum(wch), "level %s not allowed for %s", "levels %s not allowed for %s"), : too few arguments. 我做错了什么吗?此外,我对随机效应并不感兴趣,我只需要 4 种手段。这不会也为基因型返回一些东西吗?顺便说一句,这是在nlme 中提取估计值的唯一方法吗?

标签: r statistics nlme


【解决方案1】:

如果你想忽略随机分量,那么设置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

【讨论】:

  • 这很好用,你是对的。感谢一切。我自己也注意到了我的错误,而且我还有另一个愚蠢的错误。我应该关闭这个问题还是留下作为参考?顺便说一句,如果我确实想要随机组件,看来我必须为new.my.model 进行冗长的论证,这在很多情况下似乎很麻烦,或者有没有简单的方法?另请注意,KaLa 基因型分别仅在 KaLa 起源内,您的第一个建议不会对这两个起源的 Ka 进行估计吗?哦,我还有一个问题,有没有办法也得到 std.errors?
  • 我不确定 new.my.model 需要哪个“冗长的参数”。我对您最初问题的评论显示了一种包含基因型值的方法。如果您有新问题,那么您应该开始一个新帖子,以便其他人可以回答而不是在 cmets 中提出新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 2017-04-26
  • 1970-01-01
  • 2022-11-18
  • 2016-03-24
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多