根据模型平均结果进行预测:MuMIn

时间:2019-12-17 06:24:50

标签: predict mumin

提前感谢所有帮助。

我想从我的模型平均结果中得出类似于以下的图。此图是使用effect()包中的effects函数从单个模型生成的。

Desired plot outcome

据我所知,这无法通过model.avg()函数的模型平均结果来实现,因此我试图通过先预测模型平均结果然后创建图来获得相似的结果。

我从这个data建立了两个模型:

igm_20 <- glmmTMB(igm_pres ~  fRHDV2_arrive_cat + fseason + sage + save_ajust_abun + fseason*fRHDV2_arrive_cat + (1 | fsite), data = test, family = binomial)
igm_21 <- glmmTMB(igm_pres ~  fRHDV2_arrive_cat + fseason + sage + save_ajust_abun + fseason*fRHDV2_arrive_cat + sage*fRHDV2_arrive_cat + (1 | fsite), data = test, family = binomial)

我可以像这样平均这些模型:

mod_ave_list_1 <- list(igm_20, igm_21)
mod_ave_1 <- model.avg(mod_ave_list_1, rank = AICc)
s1 <- summary(mod_ave_1)

然后我尝试根据提供的数据集fseason*fRHDV2_arrive_cattest的每种组合的模型平均结果进行预测:

a <- as.data.frame(c("Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring"))
a$fRHDV2_arrive_cat <- c("Pre-arrival", "Post-arrival", "Pre-arrival", "Post-arrival", "Pre-arrival", "Post-arrival", "Pre-arrival", "Post-arrival")
colnames(a) <- c("fseason", "fRHDV2_arrive_cat")

predict(mod_ave_1, full = TRUE, backtransform = TRUE, newdata = a, se.fit = TRUE)

如果我不包含newdata = a,则预测函数运行良好,因此,我认为我提供给newdata的数据帧的结构不合适。

如果有人能够帮助我正确构建newdata的结构,以便我可以对fseason*fRHDV2_arrive_cat的每个组合产生预测,将不胜感激?我相信一旦有了预测,我就能制作出想要的情节。

我的情况与另一篇文章(here)中描述的情况非常相似,但仍未得到解答。上面我已经描述了我尝试通过另一种方式实现相似情节的尝试。我还注意到,还有其他类似的帖子,例如here;我还没有发现这些对我的情况有用。

1 个答案:

答案 0 :(得分:0)

您的newdata必须包含该模型使用的所有解释变量,而当前没有。

预测所需的变量:

all.vars(formula(mod_ave_1)[-2]) # extracts all names from formula minus response
# [1] "fRHDV2_arrive_cat" "fseason"           "sage"              "save_ajust_abun"  

新数据中的变量:

colnames(a)
# [1] "fseason"           "fRHDV2_arrive_cat"