任何帮助非常感激,先谢谢你。
我已经对三个GLMM模型进行了平均,使用的是 model.avg()
内的功能 MuMIn
包。我现在想从这个平均模型中进行预测。然而,当我调用 predict()
R似乎认为我想 predict.merMod()
因此抛出了一条警告信息,因为我要求提供标准误差,而标准误差不是由 predict.merMod()
. 相反,我想叫 predict.averaging()
这是对类模型的适当调用 averaging
并将提供模型预测的标准误差。如果我尝试强制R使用 predict.averaging()
通过指定 MuMIn::predict()
或 MuMIn::predict.averaging()
我得到一个错误信息,说该函数没有从 MuMIn
.
任何帮助解决这个问题将是非常感激的?我想从一个平均模型中预测,类的 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
使用 glmmTMB
而不是 lmer
- 语法相同,产生类似的结果,同时允许使用 se.fit
在 predict
往往效率更高。
内部 predict
取代 "merMod"
,计算出 se.fit
在MuMIn 1.43.9中,由于R抱怨包会覆盖注册的方法,所以已经删除了。
这就是 se.fit=TRUE
选项引起的警告。似乎没有计算标准误差的选项。glmerMod
. MuMIn:::predict.averaging
有一个选项 se.fit=
但它在内部适用 lme4:::predict.merMod
哪些没有(这就是为什么我们收到警告的原因),哪些帮助页面上写着。
?lme4:::predict.merMod
没有计算预测的标准误差的选项 因为很难定义一个有效的方法来结合方差参数的不确定性 我们建议使用...bootMer
的任务。
换句话说,你可以尝试用以下方法来引导预测误差。lme4::bootMer
. 一揽子计划的作者 merTools
讨论 替代品 来计算预测区间(它们的函数是 merTools::predictInterval
不会对像你这样的平均模型起作用)。)
也许从头开始写一个bootstrap方法并不难,参见例如 这篇关于 交叉验证. 不幸的是,我对这种模式不熟悉,无法进一步帮助你,而且事情变得太过统计化。堆栈溢出但你可以在网上问一个相关问题 交叉验证 关于如何计算平均广义线性混合效应模型的ootstrap预测标准误差。