full = FALSE 时 MuMIn 的预测值抛出错误

predicted values with MuMIn throwing error when full = FALSE

当我尝试使用 MuMIn 包的 predict.averaging 计算模型平均对象的预测值时,我 运行 出错了。我确信当 full 参数设置为 FALSE 时,函数应该 return 根据条件平均系数预测值。但是,它 return 是一个错误。请参阅下面使用汽车数据集的示例。这和我的实际设置非常相似。

library(MuMIn)
options(na.action = "na.fail")
global.model <- glm(mpg ~ hp + drat + wt, 
data=mtcars)
dr <- dredge(global.model)
mod.avg <- model.avg(dr, subset = delta < 2, fit = T)
summary(mod.avg)
predict(mod.avg, se.fit = TRUE, full = FALSE)

错误表明忽略了full,这意味着完整的模型系数用于预测值(不是我想要的)。我已经通过一些简单的手动值检查确认了这一点。我检查 predict() 输出也很明显。注意值是如何跳跃的,这表明系数设置为零或其他。也有人建议将 glm 更改为 lm 将解决此问题,但至少对我而言并没有。

谢谢!

将组件模型的预测与平均模型的预测进行比较,您可以看到 "full averaged" 预测落在组件预测范围内(这是应该的)。

另一方面,"subset averaged" 系数产生的预测非常有偏差。这是因为在计算均值时忽略零系数导致效果增强。

# Full/subset averaged predictions 
pyfa <- predict(mod.avg, full = TRUE)
pysa <- predict(mod.avg, full = FALSE)
# Note: full=FALSE works only with se.fit=FALSE

# Predictions from component models
pycm <- do.call("cbind", lapply(get.models(mod.avg, TRUE), predict))

n <- ncol(pycm)
k <- rep(1:3, c(n, 1, 1))
lty <- c(2,1,1); lwd <- c(1,2,2); col <- c(3,1,2)
matplot(cbind(pycm, pyfa, pysa), type = "l",
        lty = lty[k], lwd = lwd[k], col = col[k],
        ylab = "predicted")
legend("topleft", legend = c("component", "full average", "subset average"),
       lty = lty, lwd = lwd, col = col)