1

我正在尝试使用gamm4模型中的拟合值,并需要它们与我正在使用的数据框中的正确行匹配。
这是我运行的模型:

gam.outcome <- gamm4(formula = outcome ~ male + s(gpa),
                    random = ~ (1|school),
                    data=avr, na.action="na.exclude")

对于 lmer 对象,“na.exclude”选项将 NA 保留在拟合值中,以便 fit(lmer.output) 调用返回与数据帧具有相同长度和顺序的向量。但是在 gamm4 中我已经尝试过fitted(gam.outcome$gam)fitted(gam.outcome$mer)但不知道如何处理两者的结果。后者省略了所有的 NA,尽管有“na.exclude”选项。前者包含两倍于 lmer 的 NA 值,这应该是某种线索,但我太厚了,无法理解。我所知道的是,无论哪种方式,向量都不符合原始数据。

我想有不止一种方法可以解决我的问题。我非常感谢帮助改进或标记我的问题以及回答它。谢谢!

4

1 回答 1

1

大约(未经测试):

myfitted <- numeric(nrow(avr))
myfitted[!complete.cases(avr)] <- NA
myfitted[complete.cases(avr)] <- fitted(gam.outcome$mer)

或者(也未经测试)

avrframe <- model.frame(outcome~male+gpa+school,na.action=na.exclude)
napredict(attr(avrframe,"na.action"),fitted(gam.outcome$mer))

第一个解决方案假定其中的所有NAavr都在您感兴趣的列中,或者与NA您感兴趣的列中的值在同一行中。第二个尝试自动解决这个问题。

于 2012-11-19T00:27:14.847 回答