Прогнозируемые значения с ошибкой выбрасывания MuMIn при заполнении = FALSE
Я сталкиваюсь с ошибкой, когда пытаюсь вычислить прогнозируемые значения из усредненного объекта модели, используя MuMIn
пакет-х predict.averaging
, Я был уверен, что когда full
аргумент установлен в FALSE
функция должна возвращать прогнозируемые значения, основанные на условных средних коэффициентах. Тем не менее, он возвращает ошибку. Смотрите пример ниже, используя набор данных автомобилей. Это очень похоже на мою фактическую настройку.
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 решит проблему, но это не так, по крайней мере для меня.
Спасибо!
1 ответ
Сравнивая прогнозы из компонентных моделей с усредненными, можно увидеть, что "полностью усредненные" прогнозы попадают в составные прогнозы (что и должно быть).
С другой стороны, "усредненные по подмножеству" коэффициенты производят прогнозы, которые являются довольно смещенными. Это потому, что эффекты увеличиваются из-за игнорирования нулевых коэффициентов при расчете среднего.
# 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)