прогнозируемые значения с ошибкой выбрасывания MuMIn при заполнении = FALSE - PullRequest
0 голосов
/ 30 октября 2018

Я сталкиваюсь с ошибкой при попытке вычислить прогнозируемые значения из усредненного объекта модели, используя predict.averaging пакета *1002*. Я был уверен, что когда аргумент 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 Ответ

0 голосов
/ 31 октября 2018

Сравнивая прогнозы из компонентных моделей с усредненными, можно увидеть, что «полностью усредненные» прогнозы попадают в составные прогнозы (что и должно быть).

С другой стороны, «усредненные по подмножеству» коэффициенты производят прогнозы, которые достаточно смещены. Это связано с тем, что эффекты увеличиваются из-за игнорирования нулевых коэффициентов при расчете среднего.

# 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)

comparison of model predictions

...