任何帮助都非常感谢,谢谢。
我在model.avg()包中使用MuMIn函数平均了三个GLMM模型。我现在想用这个平均模型来预测。但是,当我调用predict() R时,我似乎认为我想要predict.merMod(),因此会抛出一个警告消息,因为我请求了标准错误,这些错误不是由predict.merMod()提供的。相反,我想调用predict.averaging(),这是对类averaging模型的适当调用,它将为模型预测提供标准错误。如果我试图通过指定predict.averaging()或MuMIn::predict()来强制R使用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发布于 2020-05-16 15:55:28
使用glmmTMB而不是lmer-语法是相同的,它产生类似的结果,同时允许在predict中使用se.fit,而且通常更高效。
计算predict的"merMod"的内部se.fit替换已从MuMIn 1.43.9中删除,因为R抱怨包覆盖注册方法。
发布于 2020-05-13 05:51:01
导致警告的是se.fit=TRUE选项。对于计算glmerMod的标准错误,似乎没有任何选项。MuMIn:::predict.averaging有一个选项se.fit=,但它在内部应用lme4:::predict.merMod (这是我们收到警告的原因),帮助页面声明:
?lme4:::predict.merMod没有计算标准预测错误的选项,因为很难定义一种将不确定性包含在方差参数中的有效方法;为此,我们建议使用bootMer。
换句话说,您可以尝试使用lme4::bootMer引导预测错误。package merTools的作者讨论了计算预测间隔的替代方案 (不过,它们的函数merTools::predictInterval不适用于像您这样的平均模型)。
也许从头开始编写引导方法并不难,例如这篇文章。不幸的是,我对这个模型太陌生了,无法进一步帮助您,而且对于堆栈溢出来说,事情变得太统计了,但是您可以在交叉验证上提出一个相关的问题,即如何计算/引导广义线性混合效应模型的预测标准误差。
https://stackoverflow.com/questions/61745833
复制相似问题