首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误的预测(),R不会从predict.averaging()从MuMIn调用

错误的预测(),R不会从predict.averaging()从MuMIn调用
EN

Stack Overflow用户
提问于 2020-05-12 07:12:48
回答 2查看 622关注 0票数 1

任何帮助都非常感谢,谢谢。

我在model.avg()包中使用MuMIn函数平均了三个GLMM模型。我现在想用这个平均模型来预测。但是,当我调用predict() R时,我似乎认为我想要predict.merMod(),因此会抛出一个警告消息,因为我请求了标准错误,这些错误不是由predict.merMod()提供的。相反,我想调用predict.averaging(),这是对类averaging模型的适当调用,它将为模型预测提供标准错误。如果我试图通过指定predict.averaging()MuMIn::predict()来强制R使用MuMIn::predict.averaging(),则会出现一个错误,说明该函数不是从MuMIn导出的。

有什么帮助解决这个问题将是非常感谢的吗?我希望从averaging类的平均模型中进行预测,并获得估计值和标准误差。

下面是可复制的示例。

代码语言:javascript
复制
# 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-16 15:55:28

使用glmmTMB而不是lmer-语法是相同的,它产生类似的结果,同时允许在predict中使用se.fit,而且通常更高效。

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

票数 1
EN

Stack Overflow用户

发布于 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不适用于像您这样的平均模型)。

也许从头开始编写引导方法并不难,例如这篇文章。不幸的是,我对这个模型太陌生了,无法进一步帮助您,而且对于堆栈溢出来说,事情变得太统计了,但是您可以在交叉验证上提出一个相关的问题,即如何计算/引导广义线性混合效应模型的预测标准误差。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61745833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档