1

非常感谢任何帮助,在此先感谢。

我使用包中的model.avg()函数对三个 GLMM 模型进行了平均MuMIn。我现在想从这个平均模型中进行预测。但是,当我调用predict()R 时似乎认为我想要predict.merMod()并因此引发警告消息,因为我要求提供标准错误,而predict.merMod(). 相反,我想调用predict.averaging()哪个是对类模型的适当调用,averaging并将为模型预测提供标准错误。predict.averaging()如果我尝试通过指定来强制使用 R,MuMIn::predict()或者MuMIn::predict.averaging()我收到一条错误消息,指出该函数不是从MuMIn.

任何帮助解决这个问题将不胜感激?我想从 class 的平均模型中进行预测averaging,并希望获得估计值和标准误差。

下面的可重现示例。

# Load packages
> library(MuMIn); library(lme4)

# Create test data set
> test <- rbind(mtcars, mtcars)
> test <- rbind(mtcars, test)

# Create test models
> t1 <- glmer(am ~  hp + (1 | carb), data = test, family = binomial)
> t2 <- glmer(am ~  hp + vs + (1 | carb), data = test, family = binomial)

# Create model list and average models
> list <- list(t1, t2)
> p1 <- model.avg(list)

# Create new data set for predictions
> nd <- mtcars[1:2,]
> nd <- select(nd, hp, vs)

# Model predictions demonstrating errors and warnings
> predict(p1, backtransform = TRUE, newdata = nd, re.form = NA, se.fit = TRUE)
    Mazda RX4 Mazda RX4 Wag 
    0.8938837     0.8938837 
Warning messages:
1: In predict.merMod(object = new("glmerMod", resp = new("glmResp",  :
  unused arguments ignored
2: In predict.merMod(object = new("glmerMod", resp = new("glmResp",  :
  unused arguments ignored

> MuMIn::predict(p1, backtransform = TRUE, newdata = nd, re.form = NA, se.fit = TRUE)
Error: 'predict' is not an exported object from 'namespace:MuMIn'

> predict.averaging(p1, backtransform = TRUE, newdata = nd, re.form = NA, se.fit = TRUE)
Error in predict.averaging(p1, backtransform = TRUE, newdata = nd, re.form = NA,  : 
  could not find function "predict.averaging"

> MuMIn::predict.averaging(p1, backtransform = TRUE, newdata = nd, re.form = NA, se.fit = TRUE)
Error: 'predict.averaging' is not an exported object from 'namespace:MuMIn'

> MuMIn:::predict.averaging(p1, backtransform = TRUE, newdata = nd, re.form = NA, se.fit = TRUE)
    Mazda RX4 Mazda RX4 Wag 
    0.8938837     0.8938837 
Warning messages:
1: In predict.merMod(object = new("glmerMod", resp = new("glmResp",  :
  unused arguments ignored
2: In predict.merMod(object = new("glmerMod", resp = new("glmResp",  :
  unused arguments ignored

4

2 回答 2

1

这是se.fit=TRUE导致警告的选项。似乎没有计算标准误差的选项glmerModMuMIn:::predict.averaging有一个选项se.fit=,但它在内部适用lme4:::predict.merMod,哪个没有(这就是我们收到警告的原因),以及哪个帮助页面指出:

?lme4:::predict.merMod 没有计算预测标准误差的选项,因为很难定义一种在方差参数中包含不确定性的有效方法;我们建议 bootMer执行此任务。

换句话说,您可以尝试使用lme4::bootMer. package 的作者merTools讨论了计算预测间隔的替代方法merTools::predictInterval(不过,它们的功能不适用于像你这样的平均模型)。

从头开始编写引导方法可能并不难,例如,请参见Cross Validated上的这篇文章。不幸的是,我对该模型太不熟悉,无法进一步帮助您,而且对于Stack Overflow来说,事情变得过于统计了,但您可以在Cross Validated上提出一个相关问题,了解如何计算/引导预测平均广义线性混合效应的标准误差楷模。

于 2020-05-13T05:51:01.133 回答
1

使用glmmTMB代替lmer- 语法是相同的,它在允许se.fitin 的同时产生相似的结果predict,并且通常更有效。

从 MuMIn 1.43.9 起,计算的内部predict替换已被删除,因为 R 抱怨包覆盖注册的方法。"merMod"se.fit

于 2020-05-16T15:55:28.383 回答