Невозможно запустить модели glmer с na.action=na.fail, необходимым для функции драгирования MuMIn

Mac OS 10.9.5, R 3.2.3, MuMIn_1.15.6, lme4_1.1-10

Воспроизводимый пример кода, используя пример данных

Руководство пользователя MuMIn рекомендует использовать na.action=na.failиначе функция dredge не будет работать, что я нашел:

Ошибка в драге: аргумент 'global.model' 'na.action' не задан, а опции ('na.action') - это 'na.omit'.

Тем не менее, когда я пытаюсь запустить модель Glmer с na.action=na.failЯ получаю это:

Ошибка в na.fail.default(список (pr = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,: пропущенные значения в объекте

Есть ли у меня какие-либо варианты, кроме удаления каждого наблюдения с АН? Мой полный набор данных состоит из 10000 наблюдений и имеет 23 переменных-предиктора, которые имеют NA для различных наблюдений. Удаление каждого obs с помощью NA приведет к потере некоторых данных, которых я хочу избежать.

1 ответ

Решение

Трудно понять, что вы спрашиваете.

От ?MuMIn::dredge Следует избегать использования na.action = "na.omit" (по умолчанию R) или "na.exclude" в global.model, так как это приводит к тому, что подмодели подбираются к различным наборам данных, если отсутствуют значения. Ошибка выбрасывается, если он обнаружен ".

В вашем примере, оставив значение по умолчанию options(na.action = na.omit) работает отлично:

options()$na.action
mod.na.omit <- glmer(formula = pr ~ yr + soil_dist + sla_raw + yr:soil_dist + yr:sla_raw + (1|plot) + (1|subplot),
                     data = coldat,
                     family = binomial)

Но, options(na.action = na.fail) причины glmer потерпеть неудачу (как и ожидалось из документации).

Если вы посмотрите на длину данных в "coldat", завершите случаи "coldat", "mod.na.omit", вы получите следующее:

> # number of rows in coldat
> nrow(coldat)
[1] 3171

> # number of complete cases in coldat
> nrow(coldat[complete.cases(coldat), ])
[1] 2551

> # number of rows in data included in glmer model when using 'na.omit'
> length(mod.na.omit@frame$pr)
[1] 2551

Исходя из предоставленных вами примеров, завершите случаи "coldat" и строки "coldat", включенные glmer при использовании na.omit (mod.an.omit@frame) выдается такое же количество строк, но возможно, что при добавлении предикторов это может больше не иметь место (т. е. количество строк в mod.an.omit@frame > полные случаи простуды). В этом сценарии (как указано в документации) существует риск подмоделирования для различных наборов данных, таких как dredgeгенерирует модели. Таким образом, вместо того, чтобы подгонять подмодели, dredge принимает консервативный подход к АН и выдает ошибку.

Таким образом, вы должны либо удалить неполные случаи (которые вы не хотите делать), либо интерполировать пропущенные значения. Я обычно избегаю интерполяции, если есть большие блоки отсутствующих данных, которые затрудняют оценку значения, и вместо этого удаляю неполные случаи.

Другие вопросы по тегам