Как я могу проверить, является ли случайный эффект значительным?


34

Я пытаюсь понять, когда использовать случайный эффект, а когда он не нужен. Мне сказали, что эмпирическое правило, если у вас есть 4 или более групп / отдельных лиц, которые я делаю (15 отдельных лосей). Некоторые из этих лосей были эксперименты 2 или 3 раза в общей сложности 29 испытаний. Я хочу знать, ведут ли они себя по-разному, когда они находятся в ландшафтах с более высоким риском, чем нет. Итак, я думал, что установлю индивидуальность как случайный эффект. Тем не менее, мне сейчас говорят, что нет необходимости включать человека в качестве случайного эффекта, потому что в его ответной реакции не так много различий. Что я не могу понять, так это как проверить, действительно ли что-то учитывается при определении индивидуума как случайного эффекта. Может быть, первоначальный вопрос: Какой тест / диагностику я могу сделать, чтобы выяснить, является ли Individual хорошей объяснительной переменной и должен ли это быть фиксированный эффект - qq plots? гистограмм? разброс участков? И что бы я искал в этих шаблонах.

Я запускал модель с отдельным человеком как случайный эффект и без него, но затем я прочитал http://glmm.wikidot.com/faq, где они утверждают:

не сравнивайте модели lmer с соответствующими подгонками lm или glmer / glm; логарифмические правдоподобия несоизмеримы (т. е. они включают разные аддитивные термины)

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

В моей модели со случайным эффектом я также пытался посмотреть на результат, чтобы увидеть, какое свидетельство или значение имеет RE

lmer(Velocity ~ D.CPC.min + FD.CPC + (1|ID), REML = FALSE, family = gaussian, data = tv)

Linear mixed model fit by maximum likelihood 
Formula: Velocity ~ D.CPC.min + FD.CPC + (1 | ID) 
   Data: tv 
    AIC    BIC logLik deviance REMLdev
 -13.92 -7.087  11.96   -23.92   15.39
Random effects:
 Groups   Name        Variance Std.Dev.
 ID       (Intercept) 0.00000  0.00000 
 Residual             0.02566  0.16019 
Number of obs: 29, groups: ID, 15

Fixed effects:
              Estimate Std. Error t value
(Intercept)  3.287e-01  5.070e-02   6.483
D.CPC.min   -1.539e-03  3.546e-04  -4.341
FD.CPC       1.153e-04  1.789e-05   6.446

Correlation of Fixed Effects:
          (Intr) D.CPC.
D.CPC.min -0.010       
FD.CPC    -0.724 -0.437

Вы видите, что мое отклонение и SD от индивидуального идентификатора как случайный эффект = 0. Как это возможно? Что означает 0? Это правильно? Тогда мой друг, который сказал: «Поскольку нет никакого изменения, использующего ID, поскольку случайный эффект не нужен», верно? Так, тогда я бы использовал это как фиксированный эффект? Но разве тот факт, что существует так мало различий, не означает, что он все равно ничего нам не скажет?


Относительно получения точной 0 случайной дисперсии см. Stats.stackexchange.com/questions/115090 .
говорит амеба: восстанови Монику

Ответы:


21

Оценка, IDдисперсия = 0, указывает на то, что уровень изменчивости между группами недостаточен для включения случайных эффектов в модель; то есть. Ваша модель вырождена.

Как вы правильно идентифицируете себя: скорее всего, да; IDкак случайный эффект не нужен. Мало что приходит на ум, чтобы проверить это предположение:

  1. Вы можете сравнить (используя REML = Fвсегда) AIC (или ваш любимый IC в целом) между моделью со случайными эффектами и без них и посмотреть, как это происходит.
  2. Вы бы посмотрели на anova()вывод двух моделей.
  3. Вы можете выполнить параметрическую загрузку, используя апостериорное распределение, определенное вашей исходной моделью.

Имейте в виду, что у вариантов 1 и 2 есть проблема: вы проверяете что-то, что находится на границах пространства параметров, так что на самом деле они не являются технически обоснованными. Сказав это, я не думаю, что вы получите неправильное представление о них, и многие люди используют их (например, Дуглас Бейтс, один из разработчиков lme4, использует их в своей книге, но четко заявляет, что предостережение о значениях параметров проверяется на границе множества возможных значений). Вариант 3 является самым утомительным из 3, но на самом деле дает вам лучшее представление о том, что происходит. Некоторые люди испытывают искушение использовать непараметрическую загрузку также, но я думаю, что с учетом того факта, что вы делаете параметрические предположения, чтобы начать с вас, можно также использовать их.


6
Пакет RLRsim - это действительно удобный способ проверки случайных эффектов с помощью тестов на основе отношения правдоподобия.
atrichornis

@atrichornis: +1. Интересная упаковка; Я не знал об этом. Я только что посмотрел на его код, я бы сказал, довольно просто. Я хотел бы, чтобы они включили его (или что-то в этом роде), lme4особенно сейчас, когда он не mcmcsamp()работает, и у людей остается только собственная реализация самозагрузки, чтобы получить приличные p-значения и т. Д.
usεr11852 говорит восстановить Monic

Правда, смешанные модели не являются прямыми в R. Много приближений и обходных путей ... Хотя я понимаю, что SAS и т. Д. Просто затушевывают некоторые из тех же самых неопределенностей? Бен Болкер является соавтором обоих пакетов, у него могут быть причины не включать его. Вероятно, время!
atrichornis

4
У начальной загрузки на границе пространства параметров есть свой набор проблем и проблем, приводящих к несогласованности . Бутстрап не является панацеей, и его не следует бросать в сумку, если предположить, что он решит все проблемы.
StasK

2
Посмотрите, аргумент очень тонкий. Насколько я могу вспомнить, это сводится к тому, что вы выполняете загрузку из дистрибутива, отличного от нулевого; и учитывая нестандартные распределения, полученные на границе, условия регулярности нарушаются, и распределение начальной загрузки не сходится к цели. Я думаю, что непараметрический бутстрап все еще может быть построен здесь, удаляя групповые средние невязки. Однако при нарушении независимости наблюдений между группами может возникнуть еще один слой осложнений.
StasK

3

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

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

IDconst <- factor(rep(1, each = length(tv$Velocity)))

Затем вы можете создать модель, которая использует этот столбец в качестве случайного эффекта:

fm1 <- lmer(Velocity ~ D.CPC.min + FD.CPC + (1|IDconst), 
  REML = FALSE, family = gaussian, data = tv)

На этом этапе вы можете сравнить (AIC) вашу исходную модель со случайным эффектом ID(давайте назовем это fm0) с новой моделью, которая не учитывает, IDпоскольку IDconstона одинакова для всех ваших данных.

anova(fm0,fm1)

Обновить

user11852 просил привести пример, потому что, по его / ее мнению, вышеупомянутый подход даже не будет выполнен. Напротив, я могу показать, что подход работает (по крайней мере, с тем, lme4_0.999999-0что я сейчас использую).

set.seed(101)
dataset <- expand.grid(id = factor(seq_len(10)), fac1 = factor(c("A", "B"),
  levels = c("A", "B")), trial = seq_len(10))
dataset$value <- rnorm(nrow(dataset), sd = 0.5) +
      with(dataset, rnorm(length(levels(id)), sd = 0.5)[id] +
      ifelse(fac1 == "B", 1.0, 0)) + rnorm(1,.5)
    dataset$idconst <- factor(rep(1, each = length(dataset$value)))

library(lme4)
fm0 <- lmer(value~fac1+(1|id), data = dataset)
fm1 <- lmer(value~fac1+(1|idconst), data = dataset)

anova(fm1,fm0)

Выход:

  Data: dataset
  Models:
  fm1: value ~ fac1 + (1 | idconst)
  fm0: value ~ fac1 + (1 | id)

      Df    AIC    BIC  logLik  Chisq Chi Df Pr(>Chisq)
  fm1  4 370.72 383.92 -181.36                      
  fm0  4 309.79 322.98 -150.89 60.936      0  < 2.2e-16 ***

Согласно этому последнему тесту, мы должны сохранить случайный эффект, так как fm0модель имеет самый низкий AIC и BIC.

Обновление 2

Кстати, этот же подход предложен Н. В. Гэлвеем в «Введение в смешанное моделирование: за пределами регрессии и дисперсионного анализа» на страницах 213-214.


Вы проверили свою идею? Пожалуйста, докажите, что я не прав, но я думаю, что ваша идея даже не осуществится. Если IDconstодинаковые для всех ваших данных, то у вас нет группировки. Вам нужен группирующий фактор, чтобы иметь хотя бы один уровень выборки, а способ настройки модели не имеет ни одного. Возможно, я мог бы поверить в обоснование использования «случайной группировки», но это совсем другая игра в мяч. Проверьте свой подход с некоторыми фиктивными данными. Я твердо верю, что с вашей предложенной настройкой lmer()не будет работать. (Я использую lme4_0.99999911-1)
usεr11852 говорит восстановить Monic

@ user11852 Пожалуйста, посмотрите мое обновление и дайте нам знать, если этот подход работает также lme4_0.99999911-1.
VLC

Z

3
Да, я сделал то, что вы предлагаете; это не будет работать / вычислять. Error in lFormula(formula = value ~ fac1 + (1 | idconst), data = dataset) : grouping factors must have at least 1 sampled level, И, как я уже сказал, концептуально это неправильно. Дело не в том, чтобы заставить программное обеспечение выдавать какие-то цифры, это в том случае, если то, что вы говорите, является разумным. У вас нет второй смешанной модели для сравнения, если в этой модели случайный эффект по конструкции является константой. Вы могли бы также исключить это и попробовать вместо этого линейную модель.
usεr11852 говорит восстановить Monic

1
Обновление согласования, определяющего одну групповую случайную величину в lme4. Это может быть сделано , если вы установите опцию: control=lmerControl(check.nlev.gtr.1="ignore"). Бен Болкер упоминает об этом здесь: github.com/lme4/lme4/issues/411 .
Робин Бомонт

1

Я хотел бы ответить на более «начальный» вопрос.

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

Гетероскедастичность

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

Боксплот для проверки гетероскедастичности

Отсюда, ответы выше обслуживают ваш главный вопрос. Есть также тесты, которые проверяют гетероскедастичность, один из них здесь - https://dergipark.org.tr/download/article-file/94971 . Но я не уверен, существуют ли какие-либо тесты для обнаружения гетероскедастичности на уровне группы.


Пожалуйста, используйте только поле «Ваш ответ», чтобы ответить на вопрос ОП. CV - это строгий сайт вопросов и ответов, а не дискуссионный форум. Последняя, ​​выделенная жирным шрифтом часть вашего поста - это новый вопрос, а не ответ на этот вопрос. Если у вас есть новый вопрос, нажмите на серый ASK QUESTIONвверху и задайте его там. Поскольку вы новичок здесь, вы можете посетить наш тур , в котором есть информация для новых пользователей.
gung - Восстановить Монику
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.