Что делать с корреляцией случайных эффектов, равной 1 или -1?

9

Нередко случается, когда имеет дело со сложными максимальными смешанными моделями (оценка всех возможных случайных эффектов для данных и модели), это идеальная (+1 или -1) или почти идеальная корреляция между некоторыми случайными эффектами. В целях обсуждения давайте рассмотрим следующую модель и краткое изложение модели

Model: Y ~ X*Cond + (X*Cond|subj)

# Y = logit variable  
# X = continuous variable  
# Condition = values A and B, dummy coded; the design is repeated 
#             so all participants go through both Conditions  
# subject = random effects for different subjects  

Random effects:
 Groups  Name             Variance Std.Dev. Corr             
 subject (Intercept)      0.85052  0.9222                    
         X                0.08427  0.2903   -1.00            
         CondB            0.54367  0.7373   -0.37  0.37      
         X:CondB          0.14812  0.3849    0.26 -0.26 -0.56
Number of obs: 39401, groups:  subject, 219

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)       2.49686    0.06909   36.14  < 2e-16 ***
X                -1.03854    0.03812  -27.24  < 2e-16 ***
CondB            -0.19707    0.06382   -3.09  0.00202 ** 
X:CondB           0.22809    0.05356    4.26 2.06e-05 ***

Предполагаемая причина этих идеальных корреляций заключается в том, что мы создали модель, которая слишком сложна для данных, которые мы имеем. Общий совет, который дается в этих ситуациях, - это (например, Matuschek et al., 2017; paper ) зафиксировать сверхпараметрические коэффициенты в 0, потому что такие вырожденные модели имеют тенденцию понижать мощность. Если мы наблюдаем заметное изменение фиксированных эффектов в сокращенной модели, мы должны принять это; если нет изменений, то нет проблем с принятием оригинала.

Однако предположим, что нас интересуют не только фиксированные эффекты, контролируемые RE (случайные эффекты), но и структура RE. В данном случае было бы теоретически правильно предположить, что Interceptи наклон Xимеет ненулевую отрицательную корреляцию. Далее следуют несколько вопросов:

  1. Что делать в таких ситуациях? Должны ли мы сообщать об идеальной корреляции и говорить, что наши данные не являются «достаточно хорошими» для оценки «реальной» корреляции? Или мы должны сообщить модель корреляции 0? Или мы можем попытаться установить какую-то другую корреляцию равной 0 в надежде, что «важная» больше не будет идеальной? Я не думаю, что здесь есть какие-то 100% правильные ответы, я бы хотел услышать ваше мнение.

  2. Как написать код, который фиксирует корреляцию 2 конкретных случайных эффектов с 0, не влияя на корреляции между другими параметрами?

User33268
источник
Пакет NLME дает вам прекрасный контроль над дисперсионно-ковариационной матрицей случайных эффектов. Я сам никогда не нуждался в этом, но я бы перечитал Модели со смешанными эффектами в S и S-PLUS (Pinheiro and Bates, 2000), если бы сделал это.
Роланд
3
Радикальная альтернатива регуляризовать модель, то есть подобрать модель байесовской с несколько информативных априорных на случайных эффектов структур (например , через blme, MCMCglmm, rstanarm, brms...)
Бен Bolker
@BenBolker Бен. Я не уверен, что это радикальная идея, поскольку подгонка нерегулярной модели может быть более радикальным способом подгонки модели;)
D_Williams
Спасибо вам всем за отличные ответы ... К сожалению, я был офлайн пару дней, но я вернулся.
User33268

Ответы:

13

Сингулярные ковариационные матрицы со случайным эффектом

Получение оценки корреляции случайного эффекта +1 или -1 означает, что алгоритм оптимизации достиг «границы»: корреляции не могут быть выше +1 или ниже -1. Даже если нет явных ошибок сходимости или предупреждений, это потенциально указывает на некоторые проблемы сходимости, потому что мы не ожидаем, что истинные корреляции будут лежать на границе. Как вы сказали, это обычно означает, что данных недостаточно для надежной оценки всех параметров. Matuschek et al. 2017 говорят, что в этой ситуации власть может быть скомпрометирована.

Еще один способ достичь границы - получить оценку дисперсии 0: почему я получаю нулевую дисперсию случайного эффекта в моей смешанной модели, несмотря на некоторые различия в данных?

Обе ситуации можно рассматривать как получение вырожденной ковариационной матрицы случайных эффектов (в вашем примере выходная ковариационная матрица равна ); нулевая дисперсия или идеальная корреляция означает, что ковариационная матрица не является полным рангом, и [по крайней мере] одно из ее собственных значений равно нулю. Это наблюдение сразу говорит о том, что существуют и другие , более сложные способы получения вырожденной ковариационной матрицы: можно иметь ковариационную матрицу × без каких-либо нулей или совершенных корреляций, но, тем не менее, с рангом-недостатком (в единственном числе). Бейтс и соавт. Смешанные модели 2015 года4 × 44×44×4(неопубликованный препринт) рекомендуют использовать анализ основных компонентов (PCA), чтобы проверить, является ли полученная ковариационная матрица единственной. Если это так, они предлагают рассматривать эту ситуацию так же, как вышеупомянутые исключительные ситуации.

Так что делать?

Если данных недостаточно для надежной оценки всех параметров модели, следует рассмотреть возможность ее упрощения. Если X*Cond + (X*Cond|subj)взять пример модели, есть несколько возможных способов упростить ее:

  1. Удалите один из случайных эффектов, обычно корреляцию высшего порядка:

    X*Cond + (X+Cond|subj)
  2. Избавьтесь от всех параметров корреляции:

    X*Cond + (X*Cond||subj)

    Обновление: как отмечает @Henrik, ||синтаксис удалит корреляции только в том случае, если все переменные слева от него являются числовыми. Если Condзадействованы категориальные переменные (такие как ), лучше использовать его удобный afexпакет (или громоздкие обходные пути вручную). Смотрите его ответ для более подробной информации.

  3. Избавьтесь от некоторых параметров корреляции, разбив термин на несколько, например:

    X*Cond + (X+Cond|subj) + (0+X:Cond|subj)
  4. Ограничьте ковариационную матрицу каким-то конкретным способом, например, установив одну конкретную корреляцию (ту, которая достигла границы) в ноль, как вы предлагаете. Для этого нет встроенного способа lme4. Посмотрите ответ @ BenBolker на SO, чтобы продемонстрировать, как этого добиться с помощью умного взлома.

Вопреки тому, что вы сказали, я не думаю, что Matuschek et al. 2017 специально рекомендую # 4. Суть Matuschek et al. 2017 и Бейтс и др. Кажется, 2015 год начинается с максимальной модели, созданной а-ля Barr et al. 2013, а затем уменьшает сложность, пока ковариационная матрица не получит полный ранг. (Более того, они часто рекомендуют еще больше уменьшить сложность, чтобы увеличить мощность.) Обновление: Напротив, Barr et al. рекомендуем уменьшать сложность ТОЛЬКО если модель не сходится; они готовы терпеть единичные ковариационные матрицы. Смотрите @ ответ Хенрика.

Если кто-то согласен с Бейтсом / Матушеком, то я думаю, что можно попробовать разные способы уменьшить сложность, чтобы найти тот, который выполняет работу, нанося «наименьший ущерб». Глядя на мой список выше, исходная ковариационная матрица имеет 10 параметров; # 1 имеет 6 параметров, # 2 имеет 4 параметра, # 3 имеет 7 параметров. Какая модель избавится от идеальных корреляций, невозможно сказать без их подгонки.

Но что, если вы заинтересованы в этом параметре?

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

Обратите внимание, что установка параметра корреляции в ноль не обязательно приведет к BLUP ( ranef), которые не коррелированы; на самом деле они могут даже не сильно пострадать (см . ответ @ Placidia для демонстрации ). Таким образом, одним из вариантов будет посмотреть на корреляции BLUP и сообщить об этом.

Другим, возможно, менее привлекательным вариантом будет использование режима « subjectфиксированный эффект» Y~X*cond*subj, получение оценок для каждого субъекта и вычисление корреляции между ними. Это эквивалентно выполнению отдельных Y~X*condрегрессий для каждого субъекта в отдельности и получению оценок корреляции от них.


См. Также раздел о единичных моделях в FAQ по смешанной модели Бена Болкера:

Очень часто смешанные модели приводят к единичным подгонкам. Технически, сингулярность означает, что некоторые параметры (дисперсия-ковариация разложения Холецкого), соответствующие диагональным элементам фактора Холецкого, в точности равны нулю, который является краем допустимого пространства, или, что то же самое, что матрица дисперсии-ковариации имеет некоторый ноль собственные значения (т. е. положительное полуопределенное, а не положительно определенное) или (почти эквивалентно), что некоторые из дисперсий оцениваются как ноль, или некоторые из корреляций оцениваются как +/- 1.θ

амеба
источник
1
Мой пример показывает, что для (Machine||Worker) lmerоценок на одну дисперсию больше, чем для (Machine|Worker). Так что то, что lmerпроисходит ||с факторами, не может быть описано как «это только удаляет корреляции между факторами, но не между уровнями категориального фактора». Это приводит к изменению структуры случайных эффектов в несколько странным образом (она расширяется , (Machine||Worker)чтобы (1|Worker) + (0+Machine|Worker), следовательно, дополнительная дисперсия). Не стесняйтесь изменить мой редактировать. Мой главный вопрос заключается в том, что в этих утверждениях необходимо четко различать числовые и категориальные ковариаты.
Хенрик
1
Нет, также не работает с бинарными переменными, смотрите сами: machines2 <- subset(Machines, Machine %in% c("A", "B")); summary(lmer(score ~ Machine + (Machine || Worker), data=machines2)). Как правило, он не работает с факторами, связанными с этим расширением, и с тем, как он Rработает с факторами в model.matrix.
Хенрик
@amoeba: Я думаю, что вы сделали интересную мысль, предложив обратиться к ranefзначениям для изучения корреляции между случайными эффектами. Я не слишком глубоко в этой теме, но я знаю, что обычно не рекомендуется работать с извлеченными значениями ranef, а скорее с оценочными корреляциями и отклонениями. Что вы думаете об этом? Кроме того, я не знаю, как можно было бы объяснить рецензенту, что корреляция в модели не постулирована, но мы все еще рассчитываем корреляцию извлеченных значений. Это не имеет смысла
User33268
1
@RockyRaccoon Да, я думаю, что лучше использовать / сообщить оценочный параметр корреляции, но здесь мы говорим о ситуации, когда мы, вероятно, не можем оценить его, потому что он сходится к 1. Вот что я бы написал в статье: «Полная модель сходилась для решения с corr = 1, поэтому, следуя совету в [цитаты], мы использовали сокращенную модель [подробности]. Корреляция между BLUP со случайным эффектом в этой модели была 0,9 ". Опять же, когда вы не включаете корреляцию, вы не ограничиваете модель, чтобы рассматривать их как некоррелированные! Вы просто не моделируете эту корреляцию явно.
амеба
У меня есть еще один вопрос: означают ли дисперсии, близкие к нулю, а также совершенные и близкие к идеальным корреляции случайных эффектов что-то о реальном значении параметров? Например, подразумевают ли -1 корреляции, что реальная корреляция по крайней мере отрицательна и / или что она по крайней мере ненулевая? Более конкретно, если мы попытаемся оценить корреляцию, которая в действительности равна 0, возможно ли, чтобы мы получили оценку -1?
User33268
9

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


Подавление параметров корреляции (варианты 2 и 3 в ответе амебы) с помощью ||работ работает только для числовых ковариат, lmerа не для факторов. Это обсуждается более подробно с кодом Рейнхольда Клегля .

Тем не менее, мой afexпакет предоставляет функции для подавления корреляции также среди факторов, если аргумент expand_re = TRUEв вызове mixed()(см. Также функцию lmer_alt()). По сути, это достигается путем реализации подхода, обсуждаемого Райнхольдом Клиглом (т.е. преобразование факторов в числовые ковариаты и определение структуры случайных эффектов для них).

Простой пример:

library("afex")
data("Machines", package = "MEMSS") # same data as in Kliegl code

# with correlation:
summary(lmer(score ~ Machine + (Machine  | Worker), data=Machines))
# Random effects:
#  Groups   Name        Variance Std.Dev. Corr       
#  Worker   (Intercept) 16.6405  4.0793              
#           MachineB    34.5467  5.8776    0.48      
#           MachineC    13.6150  3.6899   -0.37  0.30
#  Residual              0.9246  0.9616              
# Number of obs: 54, groups:  Worker, 6

## crazy results:
summary(lmer(score ~ Machine + (Machine  || Worker), data=Machines))
# Random effects:
#  Groups   Name        Variance Std.Dev. Corr     
#  Worker   (Intercept)  0.2576  0.5076            
#  Worker.1 MachineA    16.3829  4.0476            
#           MachineB    74.1381  8.6103   0.80     
#           MachineC    19.0099  4.3600   0.62 0.77
#  Residual              0.9246  0.9616            
# Number of obs: 54, groups:  Worker, 6

## as expected:
summary(lmer_alt(score ~ Machine + (Machine  || Worker), data=Machines))
# Random effects:
#  Groups   Name         Variance Std.Dev.
#  Worker   (Intercept)  16.600   4.0743  
#  Worker.1 re1.MachineB 34.684   5.8894  
#  Worker.2 re1.MachineC 13.301   3.6471  
#  Residual               0.926   0.9623  
# Number of obs: 54, groups:  Worker, 6

Для тех, кто не знает afex, основной функциональностью для смешанных моделей является предоставление значений p для фиксированных эффектов, например:

(m1 <- mixed(score ~ Machine + (Machine  || Worker), data=Machines, expand_re = TRUE))
# Mixed Model Anova Table (Type 3 tests, KR-method)
# 
# Model: score ~ Machine + (Machine || Worker)
# Data: Machines
#    Effect      df        F p.value
# 1 Machine 2, 5.98 20.96 **    .002
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

summary(m1)  
# [...]
# Random effects:
#  Groups   Name         Variance Std.Dev.
#  Worker   (Intercept)  27.4947  5.2435  
#  Worker.1 re1.Machine1  6.6794  2.5845  
#  Worker.2 re1.Machine2 13.8015  3.7150  
#  Residual               0.9265  0.9626  
# Number of obs: 54, groups:  Worker, 6
# [...]

Дейл Барр из Барр и соавт. (2013) в статье более осторожно рекомендуют уменьшить структуру случайных эффектов, чем в ответе амебы. В недавнем твиттере он написал:

  • «Снижение модели создает неизвестный риск антиконсервативности, и должно быть сделано с осторожностью, если вообще». а также
  • «Моя главная проблема заключается в том, что люди понимают риски, связанные с сокращением модели, и что для минимизации этого риска требуется более консервативный подход, чем общепринятый (например, каждый наклон проверен на 0,05)».

Поэтому рекомендуется соблюдать осторожность.


Как один из рецензентов, я также могу дать некоторое представление о том, почему мы, Бейтс и др. (2015) статья осталась неопубликованной. Я и два других рецензента (которые подписали, но останутся здесь без названия) подверглись некоторой критике в связи с подходом PCA (кажется беспринципным, и нет никаких доказательств того, что он превосходит власти). Кроме того, я полагаю, что все три критиковали, что документ не фокусировался на вопросе о том, как определить структуру случайных эффектов, но также попытался ввести GAMM. Таким образом, статья Bates et al (2015) переросла в Matuschek et al. (2017), в которой рассматривается проблема структуры случайных эффектов с помощью моделирования, и Baayen et al. (2017) статья о внедрении GAMM.

Мой полный обзор Бейтса и соавт. черновик можно найти здесь . IIRC, другие обзоры имели вид схожих основных моментов.

Хенрик
источник
ХОРОШО. Затем я мог бы добавить в него небольшие правки / обновления, чтобы уточнить некоторые моменты, которые вы делаете. Что касается препринта Бейтса, он вполне может быть неоптимальным во многих отношениях. Но я полностью согласен с Бейтсом и соавт. что особые ковариационные матрицы представляют собой точно такую ​​же проблему, что и корреляции + 1 / -1. Математически нет разницы. Поэтому, если мы примем, что совершенные корреляции ставят под угрозу власть, то мы должны быть очень осторожны с единичным значением. даже при отсутствии явных симуляций, показывающих это. Я не согласен, что это "беспринципно".
амеба
@amoeba в lmer_altосновном работает точно так же lmer(или даже glmer) с той лишь разницей, что допускает ||синтаксис. Поэтому я не уверен, почему вы хотели бы избежать afexлюбой ценой. Он должен даже работать без прикрепления (т. Е. afex::lmer_alt(...)).
Хенрик
@amoeba То, что он делает, - это в основном подход, описанный в коде Рейнхольдом Клиглом (т.е. расширение случайных эффектов). Для каждого члена случайных эффектов формулы он создает матрицу модели (т. Е. Преобразует факторы в числовые ковариаты). Этот model.matrix затем cbindк данным. Затем член случайных эффектов в формуле заменяется новым, в котором каждый из вновь созданных столбцов объединяется с +. См. Строки с 690 по 730 на github.com/singmann/afex/blob/master/R/mixed.R
Хенрик,
Что касается категориальных переменных слева ||, это действительно важный момент, спасибо, что подняли его и объяснили мне (я отредактировал свой ответ, чтобы отразить это). Мне нравится эта функциональность lmer_altв afex. Я просто упомяну здесь для полноты, что для получения того же результата при lmerвызове vanilla без какой-либо дополнительной предварительной обработки, например, можно указать (1+dummy(Machine,'B')+dummy(Machine,'C') || Worker). Это явно становится очень громоздким, когда категориальная переменная имеет много уровней.
амеба
2
@amoeba Важно отметить, что подход, использующий подход, dummy()работает только с контрастами лечения по умолчанию, а не тогда, когда случайные эффекты используют контрасты от суммы к нулю (который следует использовать, если модель имеет взаимодействия). Например, вы можете увидеть это, если сравнить компоненты дисперсии в приведенном выше примере для lmer_altвызова с mixedвызовом.
Хенрик
1

У меня тоже была эта проблема при использовании оценки максимального правдоподобия - я использую только алгоритм Goldstein IGLS, реализованный с помощью программного обеспечения MLwiN, а не LME4 в R. Однако в каждом конкретном случае проблема решилась, когда я переключился на оценку MCMC с использованием того же самого програмное обеспечение. У меня даже была корреляция, превышающая 3, которая разрешилась, когда я изменил оценку. Используя IGLS, корреляция рассчитывается после оценки как ковариация, деленная на произведение квадратного корня на произведение связанных дисперсий, и это не учитывает неопределенность в каждой из составляющих оценок.

Программное обеспечение IGLS не «знает», что ковариация подразумевает корреляцию, а просто вычисляет оценки постоянной, линейной, квадратичной и т. Д. Дисперсионной функции. В отличие от этого подход MCMC построен на предположении выборок из многомерного нормального распределения, которое соответствует дисперсиям и ковариациям с хорошими свойствами и полным распространением ошибок, так что неопределенность в оценке ковариаций учитывается при оценке дисперсий и наоборот.

MLwin является цепочкой оценок MCMC с оценками IGLS и неотрицательной ковариационной матрицей с определенной отрицательной дисперсией, возможно, придется изменить ее, изменив ковариацию до нуля в самом начале, прежде чем начинать выборку.

Для работающего примера см.

Разработка многоуровневых моделей для анализа контекстуальности, неоднородности и изменений с использованием MLwiN 3, том 1 (обновлено в сентябре 2017 года); Том 2 также на RGate

https://www.researchgate.net/publication/320197425_Vol1Training_manualRevisedSept2017

Приложение к главе 10

user55193
источник