Невозможно запустить модели 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: аргумент na.action в 'global.model' не задан, а параметры ('na.action') равны "na.omit".

Однако, когда я пытаюсь запустить модель glmer с na.action=na.fail, я получаю следующее:

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

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


person asmith    schedule 29.02.2016    source источник


Ответы (1)


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

From ?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> полные случаи coldat). В этом сценарии (как указано в документации) существует риск подгонки подмоделей к различным наборам данных, поскольку dredge генерирует модели. Таким образом, вместо потенциально подходящей подмодели dredge использует консервативный подход к NA и выдает ошибку.

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

person Peter K    schedule 29.02.2016
comment
Спасибо. Я подумал об этом больше и согласен, что «мне нужно удалить неполные случаи ... или интерполировать недостающие значения». Я, наверное, сделаю первое. Я понимаю, что использование na.omit означает, что функция земснаряда будет работать с разными подмножествами данных в зависимости от используемых терминов, поэтому модели не будут сопоставимы. - person asmith; 01.03.2016