2014-09-29 4 views
0

Итак, я ищу быстрый способ создать таблицу оценок DIC из моделей MCMCglmm в R. Я запускал 10 различных моделей и мог извлекать DIC из каждого отдельно, используя следующие код, где модель называется m1:Сравнение моделей DIC по нескольким моделям MCMCglmm

m1.DIC <- m1$DIC 

Но тогда я должен сделать это для каждой модели, а затем создать dataframe, который является утомительным. Я просмотрел документацию для пакета MCMCglmm и не нашел никаких подсказок о том, могу ли я получить краткое резюме по моделям через некоторую встроенную функцию. Есть ли это? Есть ли другой пакет, который может это сделать? Я знаю, что rethinking пакет использует compare, чтобы быстро и легко сравнивать модели, но это не появляется на работе с MCMCglmm выходами, как я получаю следующее сообщение об ошибке:

> compare(m1, m2, WAIC=FALSE) 
    Error in UseMethod("logLik") : 
    no applicable method for 'logLik' applied to an object of class "MCMCglmm" 
    In addition: Warning message: 
    In DIC(z, n = n) : 
    No specific DIC method for object of class MCMCglmm. Returning AIC instead. applied to an object of class "MCMCglmm" 

Есть ли подобный метод, который будет работать сравнить модели MCMCglmm?

EDIT: Также обратите внимание, что функция compare в rethinking рассчитывает весы для моделей от DIC. Возможно, этого просто не существует в форме, которая работает с пакетом MCMCglmm.

+1

ничего плохого с проставлением подогнанных объектов в список и с помощью 'sapply (model_list "[[", "DIC")'? –

+0

Так что я мог бы сделать это, но все равно будет медленнее, чем какая-то функция 'compare'. Функция 'compare' также вычисляет веса DIC, которые были бы хороши. Возможно, это просто не существует в форме, которая работает с пакетом MCMCglmm. –

+0

Почему это было бы медленнее? извлечение элемента из списка почти не требует каких-либо усилий. Или вы имеете в виду, что вам потребуется больше времени для кодирования? –

ответ

2

Если вы хотите сгенерировать и сравнить список возможных моделей с нуля, вы можете использовать функцию экскаватора в пакете MuMIn http://cran.at.r-project.org/web/packages/MuMIn/MuMIn.pdf, который поддерживает объекты MCMCglmm.

Прежде всего, необходимо сделать MCMCglmm называть обновляемыми хотя (так что земснаряд может изменить модель состава): MCMCglmm.updateable < - обновляемый (MCMCglmm). Затем вы можете запустить глобальную модель: global.model < - MCMCglmm.updateable (. У ~ x1 + ... и т.д.) Вызов драги затем будет что-то вроде dredge.MCMCglmm < - драги (global.model, rank = "DIC" ...) Вы также можете получить стандартизованные коэффициенты и скорректировать R^2.

Если у вас уже есть список моделей, вы можете использовать model.sel (в том же пакете) для создания ранжированной таблицы с весами модели и т. Д .: model.sel (model1, model2, model3, rank = "DIC ")

Удачи!

Беста, Адриан

+0

Примечание: функция 'model.sel (model1, model2, rank = "DIC") не работает для моделей с нулевым раздувом. Я подозреваю, что это потому, что это модель с несколькими ответами. Не знаете, как это исправить, потому что простой «model.name $ DIC» действительно дает ожидаемый результат (DIC для указанной переменной модели). Но «model.sel» приводит к следующей ошибке: «Ошибка в vapply (модели, функция (x) nobs (x), 1): значения должны быть длиной 1, , но FUN (X [[2]]) результат длина 2 ' –

Смежные вопросы