6

我正在尝试预测在我的二项式数据上运行的 glmer 模型随时间变化的值(x 轴中的天数)。Total Alive 和 Total Dead 是计数数据。这是我的模型,下面是相应的步骤。

full.model.dredge<-glmer(cbind(Total.Alive,Total.Dead)~(CO2.Treatment+Lime.Treatment+Day)^3+(Day|Container)+(1|index),
                         data=Survival.data,family="binomial")

正如您在代码中看到的(1:index),我们已经考虑了过度分散。

然后,我们使用疏浚命令来确定具有主要影响(CO2.Treatment、Lime.Treatment、Day)及其相应交互作用的最佳拟合模型。

dredge.models<-dredge(full.model.dredge,trace=FALSE,rank="AICc")

然后为他们制作了一个工作区变量

my.dredge.models<-get.models(dredge.models)

然后,我们进行模型平均以平均最佳拟合模型的系数

silly<-model.avg(my.dredge.models,subset=delta<10)

但现在我想创建一个图表,Y 轴上的 Total Alive 和 X 轴上的 Days 以及取决于模型输出的拟合线。我知道这很棘手,因为模型连接了 Total.Alive 和 Total.Dead (请参阅cbind(Total.Alive,Total.Dead)模型。

当我尝试运行预测命令时出现错误

# 9: In UseMethod("predict") :
#   no applicable method for 'predict' applied to an object of class "mer"
4

1 回答 1

14

您的大多数问题是您使用的是 1.0 之前的版本lme4,它没有predict实现该方法。(更新将是最简单的,但我相信如果你不能出于某种原因,http://glmm.wikidot.com/faq 上有一个配方可以通过提取固定效应设计矩阵和系数...)预测实际上没有问题,它预测对数赔率(默认情况下)或概率(如果type="response");如果你想预测数字,你必须适当地乘以 N。

您没有给出一个,但这是一个使用内置cbpp数据集的可重现(尽管有些微不足道)的示例(我确实收到了一些警告消息no non-missing arguments to max; returning -Inf--但我认为这可能是因为只有一个非-模型中微不足道的固定效应参数?)

library(lme4)
packageVersion("lme4")  ## 1.1.4, but this should work as long as >1.0.0
library(MuMIn)

方便以后使用(用ggplot)为比例添加一个变量:

cbpp <- transform(cbpp,prop=incidence/size)

适合模型(您也可以使用glmer(prop~..., weights=size, ...)

gm0 <- glmer(cbind(incidence, size - incidence) ~ period+(1|herd),
           family = binomial, data = cbpp)
dredge.models<-dredge(gm0,trace=FALSE,rank="AICc")
my.dredge.models<-get.models(dredge.models)
silly<-model.avg(my.dredge.models,subset=delta<10)

预测确实有效:

predict(silly,type="response")

创建绘图:

library(ggplot2)
theme_set(theme_bw())  ## cosmetic
g0 <- ggplot(cbpp,aes(period,prop))+
    geom_point(alpha=0.5,aes(size=size))

设置预测框架:

predframe <- data.frame(period=levels(cbpp$period))

在人口级别预测(ReForm=NA-- 这可能必须REForm=NA在 lme4 `1.0.5 中):

predframe$prop <- predict(gm0,newdata=predframe,type="response",ReForm=NA)

将其添加到图表中:

g0 + geom_point(data=predframe,colour="red")+
    geom_line(data=predframe,colour="red",aes(group=1))

在此处输入图像描述

于 2014-01-29T21:57:01.030 回答