predict() 错误,R 不会从 MuMIn 调用 predict.averaging()
Error in predict(), R will not call predict.averaging() from MuMIn
非常感谢任何帮助,在此先感谢。
我使用 MuMIn
包中的 model.avg()
函数对三个 GLMM 模型进行了平均。我现在想根据这个平均模型进行预测。但是,当我调用 predict()
时,R 似乎认为我想要 predict.merMod()
并因此抛出一条警告消息,因为我已经请求标准错误,而 predict.merMod()
没有提供。相反,我想调用 predict.averaging()
,这是对 class averaging
模型的适当调用,并将为模型预测提供标准误差。如果我试图通过指定 MuMIn::predict()
或 MuMIn::predict.averaging()
来强制 R 使用 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
导致警告的是 se.fit=TRUE
选项。似乎没有计算 glmerMod
的标准误差的选项。 MuMIn:::predict.averaging
有一个选项 se.fit=
,但它在内部应用 lme4:::predict.merMod
而没有(这就是我们收到警告的原因),并且帮助页面指出:
?lme4:::predict.merMod
There is no option for computing standard errors of predictions
because it is difficult to define an efficient method that
incorporates uncertainty in the variance parameters; we recommend
bootMer
for this task.
换句话说,您可以尝试使用 lme4::bootMer
来 bootstrap 预测错误。用于计算预测区间的包 merTools
discussed alternatives 的作者(不过,他们的函数 merTools::predictInterval
不适用于像您这样的平均模型)。
从头开始编写 bootstrap 方法可能并不难,参见例如this post on Cross Validated。不幸的是,我对那个模型太不熟悉了,无法进一步帮助你,而且对于 Stack Overflow,事情变得太统计了,但你可以在 Cross Validated[ 上问一个相关的问题=31=] 关于如何 calculate/bootstrap 预测平均广义线性混合效应模型的标准误差。
使用 glmmTMB
而不是 lmer
- 语法是相同的,它产生相似的结果,同时允许 predict
中的 se.fit
,并且通常更有效。
"merMod"
的内部 predict
替换,计算 se.fit
,已从 MuMIn 1.43.9 中删除,因为 R 抱怨包覆盖注册方法。
非常感谢任何帮助,在此先感谢。
我使用 MuMIn
包中的 model.avg()
函数对三个 GLMM 模型进行了平均。我现在想根据这个平均模型进行预测。但是,当我调用 predict()
时,R 似乎认为我想要 predict.merMod()
并因此抛出一条警告消息,因为我已经请求标准错误,而 predict.merMod()
没有提供。相反,我想调用 predict.averaging()
,这是对 class averaging
模型的适当调用,并将为模型预测提供标准误差。如果我试图通过指定 MuMIn::predict()
或 MuMIn::predict.averaging()
来强制 R 使用 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
导致警告的是 se.fit=TRUE
选项。似乎没有计算 glmerMod
的标准误差的选项。 MuMIn:::predict.averaging
有一个选项 se.fit=
,但它在内部应用 lme4:::predict.merMod
而没有(这就是我们收到警告的原因),并且帮助页面指出:
?lme4:::predict.merMod
There is no option for computing standard errors of predictions because it is difficult to define an efficient method that incorporates uncertainty in the variance parameters; we recommendbootMer
for this task.
换句话说,您可以尝试使用 lme4::bootMer
来 bootstrap 预测错误。用于计算预测区间的包 merTools
discussed alternatives 的作者(不过,他们的函数 merTools::predictInterval
不适用于像您这样的平均模型)。
从头开始编写 bootstrap 方法可能并不难,参见例如this post on Cross Validated。不幸的是,我对那个模型太不熟悉了,无法进一步帮助你,而且对于 Stack Overflow,事情变得太统计了,但你可以在 Cross Validated[ 上问一个相关的问题=31=] 关于如何 calculate/bootstrap 预测平均广义线性混合效应模型的标准误差。
使用 glmmTMB
而不是 lmer
- 语法是相同的,它产生相似的结果,同时允许 predict
中的 se.fit
,并且通常更有效。
"merMod"
的内部 predict
替换,计算 se.fit
,已从 MuMIn 1.43.9 中删除,因为 R 抱怨包覆盖注册方法。