Uma ocorrência não tão incomum ao lidar com modelos mistos máximos complexos (estimar todos os efeitos aleatórios possíveis para dados e modelo) é perfeita (+1 ou -1) ou correlação quase perfeita entre alguns efeitos aleatórios. Para o propósito da discussão, vamos observar o seguinte modelo e resumo do modelo
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 ***
A suposta razão por trás dessas correlações perfeitas é que criamos um modelo complexo demais para os dados que possuímos. O conselho comum que é dado nessas situações é (por exemplo, Matuschek et al., 2017; paper ) fixar os coeficientes superparameterizados em 0, porque esses modelos degenerados tendem a diminuir a potência. Se observarmos uma mudança acentuada nos efeitos fixos em um modelo reduzido, devemos aceitá-lo; se não houver alteração, não haverá problema em aceitar a original.
No entanto, vamos supor que não estamos interessados apenas em efeitos fixos controlados por ER (efeitos aleatórios), mas também na estrutura de ER. Nesse caso, seria teoricamente correto supor que Intercept
e a inclinação X
tenha correlação negativa diferente de zero. Várias perguntas a seguir:
O que fazer em tais situações? Devemos relatar a correlação perfeita e dizer que nossos dados não são "bons o suficiente" para estimar a correlação "real"? Ou devemos relatar o modelo de correlação 0? Ou deveríamos tentar definir outra correlação como 0, na esperança de que a "importante" não seja mais perfeita? Não acho que haja respostas 100% corretas aqui. Gostaria principalmente de ouvir suas opiniões.
Como escrever o código que fixa a correlação de 2 efeitos aleatórios específicos para 0, sem influenciar as correlações entre outros parâmetros?
fonte
blme
,MCMCglmm
,rstanarm
,brms
...)Respostas:
Matrizes de covariância de efeito aleatório singulares
Obter uma estimativa de correlação de efeito aleatório de +1 ou -1 significa que o algoritmo de otimização atingiu "um limite": as correlações não podem ser maiores que +1 ou menores que -1. Mesmo se não houver erros ou avisos explícitos de convergência, isso potencialmente indica alguns problemas com a convergência, porque não esperamos que correlações verdadeiras fiquem no limite. Como você disse, isso geralmente significa que não há dados suficientes para estimar todos os parâmetros de maneira confiável. Matuschek et al. 2017 dizem que nessa situação o poder pode ser comprometido.
Outra maneira de atingir um limite é obter uma estimativa de variação de 0: Por que obtenho uma variação zero de um efeito aleatório no meu modelo misto, apesar de alguma variação nos dados?
Ambas as situações podem ser vistas como a obtenção de uma matriz de covariância degenerada de efeitos aleatórios (no seu exemplo, a matriz de covariância de saída é ); uma variância zero ou uma correlação perfeita significa que a matriz de covariância não é de classificação completa e [pelo menos] um de seus valores próprios é zero. Essa observação sugere imediatamente que existem outras maneiras mais complexas de obter uma matriz de covariância degenerada: pode-se ter uma matriz de covariância sem zeros ou correlações perfeitas, mas, no entanto, deficiente na classificação (singular). Bates et al. 2015 modelos mistos parcimoniosos4 × 44×4 4×4 (pré-impressão não publicada) recomenda o uso da análise de componentes principais (PCA) para verificar se a matriz de covariância obtida é singular. Se for, eles sugerem tratar essa situação da mesma maneira que as situações singulares acima.
Então o que fazer?
Se não houver dados suficientes para estimar todos os parâmetros de um modelo de maneira confiável, devemos considerar a simplificação do modelo. Tomando o seu modelo de exemplo
X*Cond + (X*Cond|subj)
, existem várias maneiras possíveis de simplificá-lo:Remova um dos efeitos aleatórios, geralmente a correlação de maior ordem:
Livre-se de todos os parâmetros de correlação:
Atualização: como o @Henrik observa, a
||
sintaxe somente removerá correlações se todas as variáveis à esquerda forem numéricas. Se variáveis categóricas (comoCond
) estiverem envolvidas, é melhor usar seuafex
pacote conveniente (ou soluções manuais complicadas). Veja a resposta dele para mais detalhes.Livre-se de alguns dos parâmetros de correlação dividindo o termo em vários, por exemplo:
lme4
conseguir isso. Veja a resposta do @ BenBolker no SO para uma demonstração de como conseguir isso através de alguns hackers inteligentes.Ao contrário do que você disse, não acho que Matuschek et al. 2017 recomendam especificamente # 4. A essência de Matuschek et al. 2017 e Bates et al. Parece que 2015 começa com o modelo máximo a la Barr et al. 2013 e, em seguida, diminui a complexidade até que a matriz de covariância esteja no nível máximo. (Além disso, eles recomendariam frequentemente reduzir ainda mais a complexidade, a fim de aumentar a potência.) Atualização: Em contraste, Barr et al. recomende reduzir APENAS a complexidade se o modelo não convergir; eles estão dispostos a tolerar matrizes de covariância singulares. Veja a resposta de @ Henrik.
Se alguém concorda com Bates / Matuschek, acho que é bom tentar maneiras diferentes de diminuir a complexidade para encontrar a pessoa que faz o trabalho enquanto faz "o menor dano". Olhando para a minha lista acima, a matriz de covariância original possui 10 parâmetros; # 1 tem 6 parâmetros, # 2 tem 4 parâmetros, # 3 tem 7 parâmetros. Qual modelo se livrará das correlações perfeitas é impossível dizer sem ajustá-las.
Mas e se você estiver interessado neste parâmetro?
A discussão acima trata a matriz de covariância de efeito aleatório como um parâmetro incômodo. Você levanta uma questão interessante sobre o que fazer se estiver especificamente interessado em um parâmetro de correlação que precisa "desistir" para obter uma solução de classificação completa significativa.
Observe que fixar o parâmetro de correlação em zero não produzirá necessariamente BLUPs (
ranef
) não correlacionados; na verdade, eles podem nem ser afetados tanto assim (veja a resposta de @ Placidia para uma demonstração ). Portanto, uma opção seria examinar as correlações dos BLUPs e reportar isso.Outra opção, talvez menos atraente, seria usar o tratamento
subject
como um efeito fixoY~X*cond*subj
, obter as estimativas para cada sujeito e calcular a correlação entre eles. Isso é equivalente a executarY~X*cond
regressões separadas para cada sujeito separadamente e obter as estimativas de correlação deles.Veja também a seção sobre modelos singulares nas perguntas frequentes sobre modelos mistos de Ben Bolker:
fonte
(Machine||Worker)
lmer
estimativas, uma variação é maior que para(Machine|Worker)
. Portanto, o quelmer
ocorre||
com fatores não pode ser descrito por 'isso remove apenas correlações entre fatores, mas não entre níveis de um fator categórico'. Ele altera a estrutura de efeitos aleatórios de uma maneira um tanto estranho (ele se expande(Machine||Worker)
para(1|Worker) + (0+Machine|Worker)
, por conseguinte, a variação adicional). Sinta-se livre para alterar minha edição. Meu ponto principal é que nessas declarações a distinção entre covariáveis numéricas e categóricas precisa ser esclarecida.machines2 <- subset(Machines, Machine %in% c("A", "B")); summary(lmer(score ~ Machine + (Machine || Worker), data=machines2))
. Em geral, ele não trabalha com fatores devido a essa expansão e a maneira comoR
lida com os fatoresmodel.matrix
.ranef
valores para estudar a correlação entre efeitos aleatórios. Não estou muito aprofundado neste tópico, mas sei que geralmente não é recomendável trabalhar com valores extraídos deranef
, mas sim com correlações e variações estimadas. Qual a sua opinião sobre isso? Além disso, não sei como alguém explicaria ao revisor que a correlação no modelo não foi postulada, mas ainda calculamos a correlação dos valores extraídos. Isso não faz sentidoConcordo com tudo o que foi dito na resposta da ameba, que fornece um ótimo resumo da discussão atual sobre esse assunto. Tentarei acrescentar alguns pontos adicionais e, de outra forma, refiro-me à apostila do meu curso recente de modelos mistos, que também resume esses pontos.
Suprimir os parâmetros de correlação (opções 2 e 3 na resposta da ameba) via
||
funciona apenas para covariáveis numéricaslmer
e não para fatores. Isso é discutido em alguns detalhes com o código de Reinhold Kliegl .No entanto, meu
afex
pacote fornece a funcionalidade para suprimir a correlação também entre fatores se argumentoexpand_re = TRUE
na chamada paramixed()
(consulte também a funçãolmer_alt()
). Essencialmente, ele faz isso implementando a abordagem discutida por Reinhold Kliegl (isto é, transfomindo os fatores em covariáveis numéricas e especificando a estrutura de efeitos aleatórios sobre eles).Um exemplo simples:
Para quem não sabe
afex
, a principal funcionalidade dos modelos mistos é fornecer valores de p para os efeitos fixos, por exemplo:Dale Barr, de Barr et al. (2013) é mais cauteloso ao recomendar a redução da estrutura de efeitos aleatórios do que a apresentada na resposta da ameba. Em uma recente troca no Twitter, ele escreveu:
Portanto, recomenda-se cautela.
Como um dos revisores, também posso fornecer algumas dicas sobre por que nós, Bates et al. (2015) permaneceu inédito. Eu e os outros dois revisores (que assinamos, mas permaneceremos sem nome aqui), fizemos algumas críticas à abordagem PCA (parece sem princípios e não há evidências de que seja superior em termos de poder). Além disso, acredito que os três criticaram o fato de o artigo não se concentrar na questão de como especificar a estrutura de efeitos aleatórios, mas também tenta introduzir GAMMs. Assim, o artigo de Bates et al (2015) se transformou no Matuschek et al. (2017) artigo que aborda a questão da estrutura de efeitos aleatórios com simulações e o Baayen et al. (2017) artigo que apresenta GAMMs.
Minha revisão completa do Bates et al. rascunho pode ser encontrado aqui . IIRC, as outras análises tiveram pontos principais semelhantes.
fonte
lmer_alt
basicamente funciona exatamente comolmer
(ou mesmoglmer
), com a única diferença que permite a||
sintaxe. Portanto, não sei por que você deseja evitarafex
a todo custo. Deve funcionar mesmo sem anexar (ou seja,afex::lmer_alt(...)
).cbind
para os dados. Em seguida, o termo de efeitos aleatórios na fórmula é substituído por um novo, no qual cada uma das colunas recém-criadas é concatenada com um +. Veja as linhas 690-730 na github.com/singmann/afex/blob/master/R/mixed.R||
, este é um ponto realmente importante, obrigado por trazê-lo e me explicar (editei minha resposta para refleti-lo). Eu gosto dessa funcionalidade dolmer_alt
inafex
. Vou apenas mencionar aqui, por exaustividade, que obter a mesma saída com almer
chamada de baunilha sem qualquer pré-processamento adicional que possa ser especificado, por exemplo(1+dummy(Machine,'B')+dummy(Machine,'C') || Worker)
. Isso claramente se torna muito complicado quando a variável categórica tem muitos níveis.dummy()
funciona apenas com os contrastes padrão de tratamento e não quando os efeitos aleatórios usam contrastes de soma a zero (que devem ser usados no caso de o modelo ter interações). Você pode, por exemplo, verificar se comparar os componentes de variação no exemplo acima para almer_alt
chamada com amixed
chamada.Eu também tive esse problema ao usar a estimativa de máxima verossimilhança - apenas eu uso o algoritmo Goldstein IGLS conforme implementado pelo software MLwiN e não o LME4 em R. No entanto, em cada caso, o problema foi resolvido quando mudei para a estimativa MCMC usando o mesmo Programas. Eu até tive uma correlação acima de 3, que foi resolvida quando mudei de estimativa. Usando o IGLS, a correlação é calculada após a estimativa como a covariância dividida pelo produto da raiz quadrada do produto das variações associadas - e isso não leva em conta a incerteza em cada uma das estimativas constituintes.
O software IGLS não 'sabe' que a covariância implica uma correlação e apenas calcula estimativas de uma função de variação constante, linear, quadrática etc. Em contraste, a abordagem MCMC baseia-se na suposição de amostras de uma distribuição normal multivariada que corresponde a variações e covariâncias com boas propriedades e propagação total de erros, de modo que a incerteza na estimativa das covariâncias é levada em consideração na estimativa das variações. e vice versa.
O MLwin é a cadeia de estimativa do MCMC com estimativas do IGLS e a matriz de covariância de variância definida não-negativa pode precisar ser alterada alterando-se a covariância para zero no início antes de iniciar a amostragem.
Para um exemplo trabalhado, consulte
Desenvolvimento de modelos multiníveis para análise de contextualidade, heterogeneidade e mudança usando o MLwiN 3, volume 1 (atualizado em setembro de 2017); O volume 2 também está no RGate
https://www.researchgate.net/publication/320197425_Vol1Training_manualRevisedSept2017
Apêndice ao capítulo 10
fonte