在predict()中出错,R不会从MuMIn调用predict.averaging()。

问题描述 投票:1回答:1

任何帮助非常感激,先谢谢你。

我已经对三个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

r predict mumin
1个回答
1
投票

使用 glmmTMB 而不是 lmer- 语法相同,产生类似的结果,同时允许使用 se.fitpredict往往效率更高。

内部 predict 取代 "merMod",计算出 se.fit在MuMIn 1.43.9中,由于R抱怨包会覆盖注册的方法,所以已经删除了。


1
投票

这就是 se.fit=TRUE 选项引起的警告。似乎没有计算标准误差的选项。glmerMod. MuMIn:::predict.averaging 有一个选项 se.fit=但它在内部适用 lme4:::predict.merMod 哪些没有(这就是为什么我们收到警告的原因),哪些帮助页面上写着。

?lme4:::predict.merMod 没有计算预测的标准误差的选项 因为很难定义一个有效的方法来结合方差参数的不确定性 我们建议使用... bootMer 的任务。

换句话说,你可以尝试用以下方法来引导预测误差。lme4::bootMer. 一揽子计划的作者 merTools 讨论 替代品 来计算预测区间(它们的函数是 merTools::predictInterval 不会对像你这样的平均模型起作用)。)

也许从头开始写一个bootstrap方法并不难,参见例如 这篇关于 交叉验证. 不幸的是,我对这种模式不熟悉,无法进一步帮助你,而且事情变得太过统计化。堆栈溢出但你可以在网上问一个相关问题 交叉验证 关于如何计算平均广义线性混合效应模型的ootstrap预测标准误差。

© www.soinside.com 2019 - 2024. All rights reserved.