2015-12-15 1 views
0

Я пытаюсь подобрать обобщенную линейную модель смешанных эффектов к моим данным, используя пакет lme4.предупреждающие сообщения в lme4 для анализа выживаемости, которые не возникали 3 года назад

Данные могут быть описаны следующим образом (см. Пример ниже): данные о выловах рыбы за 28 дней. Пояснительными переменными в наборе данных примера являются:

  • Region Это географический регион, из которого возникли личинки.
  • treatment Температура, при которой подвыборки рыбы из каждого региона были подняты.
  • replicate Один из трех повторений всего эксперимента
  • tub Случайная величина. 15 ванн (используется для поддержания экспериментальных температур в аквариумах) (3 replicate с для каждой из 5 температур treatment с). Каждая ванна содержала 1 аквариум для каждого Region (всего 4 аквариума) и была случайно размещена в лаборатории.
  • Day Самостоятельное объяснение, количество дней с начала эксперимента.
  • stage не используется при анализе. Можно игнорировать.

переменная отклика

  • csns кумулятивная выживаемость. i.e remaining fish/initial fish at day 0.
  • start весовые коэффициенты использовали, чтобы показать модели, что вероятность выживания относительно этого количества рыбы в начале эксперимента.
  • aquarium Вторая случайная величина. Это уникальный идентификатор для каждого отдельного аквариума, содержащий значение каждого фактора, к которому он принадлежит. например N-14-1 означает Region N, Treatment 14, replicate 1.

Моя проблема необычна, что я приспособил следующую модель до:

dat.asr3<-glmer(csns~treatment+Day+Region+ 
     treatment*Region+Day*Region+Day*treatment*Region+ 
     (1|tub)+(1|aquarium),weights=start, 
     family=binomial, data=data2) 

Однако, теперь, когда я пытаюсь повторно запустить модель, чтобы произвести анализ для публикации, я получив следующие ошибки с той же структурой модели и пакетом. Выход приведен ниже:

> Warning messages: 

1: В Eval (выражение, Envir, Enclos): нецелых #successes в биномиальной GLM!
2: В checkConv (attr (opt, «производные»), opt $ par, ctrl = control $ checkConv,:
Модель не сходилась с max | grad | = 1.59882 (tol = 0.001, component> 1)
3: В checkConv (ATTR (опт, "derivs"), выбирают $ пара, Ctrl = управление $ checkConv,:
модели почти неидентифицируемая: очень большие собственное
- Rescale переменных, модель почти неидентифицируемая: большое собственное значение отношение
- Переменные переменные?

Мое понимание заключается в следующем:

Предупреждение Сообщение 1.

non-integer #success in a binomial glm относится к формату доля переменной csns. Я консультировался с несколькими источниками, сюда включал, github, r-help и т. Д., И все это предлагали. Исследователь, который помог мне в этом анализе 3 года назад, недостижим. Может ли это иметь отношение к изменениям в пакете lme4 за последние 3 года?

Предупреждение сообщение 2.

Я понимаю, что это проблема, потому что нет достаточного количества точек данных, чтобы соответствовать модели к, в частности, на
L-30-1, L-30-2 и L-30-3,
где только два наблюдения :
Day 0 csns=1.00 и Day 1 csns=0.00
для всех трех аквариумов. Поэтому нет никакой изменчивости или достаточных данных для соответствия модели.

Тем не менее, эта модель в lme4 работает раньше, но не работает без этих предупреждений.

предупреждающее сообщение 3

Это один совершенно незнакомый мне. Никогда не видел этого раньше.

Образца данные:

Region treatment replicate tub Day stage csns start aquarium 
N  14   1 13 0 1 1.00 107 N-14-1 
N  14   1 13 1 1 1.00 107 N-14-1 
N  14   1 13 2 1 0.99 107 N-14-1 
N  14   1 13 3 1 0.99 107 N-14-1 
N  14   1 13 4 1 0.99 107 N-14-1 
N  14   1 13 5 1 0.99 107 N-14-1 

Данные вопрос 1005cs.csv доступны здесь через переносят: http://we.tl/ObRKH0owZb

Любой помощь с расшифровкой этой проблемы, был бы весьма признателен. Кроме того, любые альтернативные предложения относительно подходящих пакетов или методов для анализа этих данных также будут отличными.

+1

@ RichieCotton: Пропорции могут быть смоделированы с биномиальным распределением, если известно количество испытаний. Затем нужно дать «весовые коэффициенты». См. Также http://stats.stackexchange.com/questions/87956/r-lme4-how-to-apply-binomial-glm-to-percentages-rather-than-yes-no-counts Я не вижу проблемы с этим. .. – EDi

+0

Я думаю, нам нужен воспроизводимый пример здесь ... Дает модель разумным результатам? – EDi

+0

Я использовал аргумент 'weightights' согласно документации для' lme4'. Именно поэтому это так озадачивает. Не должно быть никаких проблем, но есть. Каков наилучший способ отправки данных? Это большой файл .csv с ~ 1250 строк ... результаты модели довольно бессмысленны, помните, по-моему, в любом случае. –

ответ

3

tl; dr предупреждение «нецелые успехи» является точной; вам решать, правильно ли использовать биномиальную модель для этих данных. Другие предупреждения предполагают, что подгонка немного нестабильна, но масштабирование и центрирование некоторых входных переменных могут привести к тому, что предупреждения исчезнут. Это до вас, опять же, чтобы решить, будет ли достаточно различны для вас, чтобы беспокоиться о том, что результаты этих различных композиций ...

data2 <- read.csv("1005cs.csv") 
library(lme4) 

Подходящая модель (чуть более компактный формулировка модели)

dat.asr3<-glmer(
    csns~Day*Region*treatment+ 
     (1|tub)+(1|aquarium), 
      weights=start, family=binomial, data=data2) 

Я получаю предупреждения, которые вы сообщаете.

Давайте посмотрим на данные:

library(ggplot2); theme_set(theme_bw()) 
ggplot(data2,aes(Day,csns,colour=factor(treatment)))+ 
     geom_point(aes(size=start),alpha=0.5)+facet_wrap(~Region) 

enter image description here

Ничего явно проблематично здесь, хотя он ясно показывает, что данные очень близки к 1 для некоторых комбинаций лечения, а также о том, что значения лечения далеки от нуля. Давайте попробуем масштабирование & центрирования некоторых входные переменные:

data2sc <- transform(data2, 
        Day=scale(Day), 
        treatment=scale(treatment)) 
dat.asr3sc <- update(dat.asr3,data=data2sc) 

Теперь «очень большие собственное» предупреждение нет, но мы все еще есть «нецелые # успехов» предупреждение, и макс | град | = 0,082. Попробуем еще один оптимизатор:

dat.asr3scbobyqa <- update(dat.asr3sc, 
        control=glmerControl(optimizer="bobyqa")) 

Теперь остается только предупреждение «не целое число #successes».

d1 <- deviance(dat.asr3) 
d2 <- deviance(dat.asr3sc) 
d3 <- deviance(dat.asr3scbobyqa) 
c(d1,d2,d3) 
## [1] 12597.12 12597.31 12597.56 

Эти девиации не отличаются очень (0,44 по шкале девиантности больше, чем может быть объяснена ошибкой округления, но не так много различий в СОГЛАСИИ); на самом деле, первая модель дает лучший (самый низкий) девиантности, предполагая, что предупреждения ложных срабатываний ...

resp <- with(data2,csns*start) 
plot(table(resp-floor(resp))) 

enter image description here

Это дает понять, что на самом деле не являются целочисленные ответы, поэтому предупреждение правильное.

+0

Право. @Ben Bolker, у меня все еще есть пара вопросов, хотя и устранены ошибки. 1) Есть ли простое объяснение, почему эти ошибки возникают сейчас и не возникали раньше (около 3 лет назад)? Как я уже говорил в своем оригинальном посте, эти ошибки не показывались, когда я использовал R (v2.8 или около того), с той же моделью, пакетом и кодом. 2) Является ли ошибка 'нецелочисленных # успехов' чем-то интересной? Если да, то как я могу ее преодолеть? Если я решаю, что не имеет смысла использовать пропорции, как я могу выразить данные по-другому, что не приведет к ошибке? –

+0

(1) мы добавили много диагностических предупреждений lme4 за последние три года - вы почти наверняка используете более новую версию lme4. (2) Да. Если у вас есть исходные размеры образцов, из которых были сделаны эти пропорции, добавьте их как аргумент 'weightights'. В противном случае вам может потребоваться поиск/задание другого вопроса здесь или в [Перекрестная проверка] (http://stats.stackexchange.com) –

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