Ранговая модель с QAIC с использованием MuMIn
Мне нужно ранжировать модель кандидата, используя критерий QAIC. Вот что я попробовал:
library(MuMIn)
model_global <- glm(vs ~ mpg + disp + wt, family = quasibinomial, mtcars)
model_1 <- glm(vs ~ mpg, family = quasibinomial, mtcars)
model_2 <- glm(vs ~ disp, family = quasibinomial, mtcars)
model_3 <- glm(vs ~ wt, family = quasibinomial, mtcars)
model_null <- glm(vs ~ 1, family = quasibinomial, mtcars)
mod.sel(model_global, model_1, model_2, model_3, model_null, rank="QAIC", chat=deviance(model_global) / df.residual(model_global))
Это возвращает эту ошибку:
Error in formula.default(x) : invalid formula
Как я могу ранжировать вышеупомянутые модели, используя QAIC?
2 ответа
Решение
Вы должны предоставить свой rank.args
как list
(увидеть ?model.sel
)
library(MuMIn)
model.sel(model_global, model_1, model_2, model_3, model_null,
rank = QAIC,
rank.args = list(chat = deviance(model_global) / df.residual(model_global)))
В (миленьком) примере, который вы предоставили, chat
бывает < 1
, предупреждение генерируется, и chat
установлено на 1.
# Model selection table
# (Intrc) disp mpg wt df logLik QAIC delta weight
# model_global -21.9000 -0.0403 0.6470 5.332 4 -8.844 25.7 0.00 0.569
# model_2 4.1380 -0.0216 2 -11.348 26.7 1.01 0.344
# model_1 -8.8330 0.4304 2 -12.767 29.5 3.85 0.083
# model_3 5.7150 -1.911 2 -15.683 35.4 9.68 0.004
# model_null -0.2513 1 -21.930 45.9 20.17 0.000
# Warning messages:
# 1: In rank(x, chat = 0.631714762477434) :
# 'chat' given is < 1, increased to 1
# ..snip..
Это действительно все в руководстве, поэтому, пожалуйста, сначала прочтите его (?model.sel
а также ?QAIC
). Обратите внимание на две проблемы в вашем коде:
- аргументы
QAIC
вmodel.sel
передаются вrank.args
аргумент, а не напрямую. - Модели квази- семейств не сообщают о вероятности, необходимой для расчета QAIC. См Примечание в
?QAIC
а такжеexample(QAIC)
для взлома, чтобы обойти это.