Невозможно запустить модели 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
принимает консервативный подход к АН и выдает ошибку.
Таким образом, вы должны либо удалить неполные случаи (которые вы не хотите делать), либо интерполировать пропущенные значения. Я обычно избегаю интерполяции, если есть большие блоки отсутствующих данных, которые затрудняют оценку значения, и вместо этого удаляю неполные случаи.