Suponha que eu tenha participantes, cada um deles dando uma resposta 20 vezes, 10 em uma condição e 10 em outra. Ajustei um modelo linear de efeitos mistos comparando em cada condição. Aqui está um exemplo reproduzível simulando essa situação usando o pacote em :lme4
R
library(lme4)
fml <- "~ condition + (condition | participant_id)"
d <- expand.grid(participant_id=1:40, trial_num=1:10)
d <- rbind(cbind(d, condition="control"), cbind(d, condition="experimental"))
set.seed(23432)
d <- cbind(d, simulate(formula(fml),
newparams=list(beta=c(0, .5),
theta=c(.5, 0, 0),
sigma=1),
family=gaussian,
newdata=d))
m <- lmer(paste("sim_1 ", fml), data=d)
summary(m)
O modelo m
produz dois efeitos fixos (uma interceptação e inclinação para condição) e três efeitos aleatórios (uma interceptação aleatória por participante, uma inclinação aleatória por participante para condição e uma correlação intercepto).
Gostaria de comparar estatisticamente o tamanho da variação de interceptação aleatória por participante nos grupos definidos por condition
(ou seja, computar o componente de variação destacado em vermelho separadamente nas condições de controle e experimentais, em seguida, testar se a diferença no tamanho dos componentes é diferente de zero). Como eu faria isso (de preferência em R)?
BÔNUS
Digamos que o modelo seja um pouco mais complicado: cada participante experimenta 10 estímulos 20 vezes cada, 10 em uma condição e 10 em outra. Assim, existem dois conjuntos de efeitos aleatórios cruzados: efeitos aleatórios para participante e efeitos aleatórios para estímulo. Aqui está um exemplo reproduzível:
library(lme4)
fml <- "~ condition + (condition | participant_id) + (condition | stimulus_id)"
d <- expand.grid(participant_id=1:40, stimulus_id=1:10, trial_num=1:10)
d <- rbind(cbind(d, condition="control"), cbind(d, condition="experimental"))
set.seed(23432)
d <- cbind(d, simulate(formula(fml),
newparams=list(beta=c(0, .5),
theta=c(.5, 0, 0, .5, 0, 0),
sigma=1),
family=gaussian,
newdata=d))
m <- lmer(paste("sim_1 ", fml), data=d)
summary(m)
Eu gostaria de comparar estatisticamente a magnitude da variação aleatória de interceptação por participante entre os grupos definidos por condition
. Como eu faria isso, e o processo é diferente do da situação descrita acima?
EDITAR
Para ser um pouco mais específico sobre o que estou procurando, quero saber:
- É a questão ", são as respostas médias condicionais dentro de cada condição (ou seja, valores de interceptação aleatória em cada condição) substancialmente diferentes umas das outras, além do que seria de esperar devido ao erro de amostragem" uma questão bem definida (ou seja, essa é a questão teoricamente responsável)? Se não, por que não?
- Se a resposta à pergunta (1) for afirmativa, como eu a responderia? Eu preferiria uma
R
implementação, mas não estou vinculado aolme4
pacote - por exemplo, parece que oOpenMx
pacote tem capacidade para acomodar análises de vários grupos e de vários níveis ( https: //openmx.ssri.psu. edu / openmx-features ), e esse parece ser o tipo de pergunta que deve ser respondida em uma estrutura SEM.
fonte
Respostas:
Há mais de uma maneira de testar essa hipótese. Por exemplo, o procedimento descrito por @amoeba deve funcionar. Mas parece-me que a maneira mais simples e conveniente de testá-lo é usando um bom e antigo teste de razão de verossimilhança comparando dois modelos aninhados. A única parte potencialmente complicada dessa abordagem é saber como configurar o par de modelos para que o abandono de um único parâmetro teste claramente a hipótese desejada de variações desiguais. Abaixo, explico como fazer isso.
Resposta curta
Alterne para a codificação de contraste (soma a zero) para sua variável independente e faça um teste de razão de probabilidade comparando seu modelo completo com um modelo que força a correlação entre inclinações aleatórias e interceptações aleatórias a 0:
Explicação visual / intuição
Para que essa resposta faça sentido, você precisa ter uma compreensão intuitiva do que valores diferentes do parâmetro de correlação implicam para os dados observados. Considere as linhas de regressão específicas do sujeito (variando aleatoriamente). Basicamente, o parâmetro de correlação controla se as linhas de regressão do participante "se expandem para a direita" (correlação positiva) ou "se expandem para a esquerda" (correlação negativa) em relação ao pontoX=0 , onde X é seu código independente de contraste variável. Qualquer um desses implica variação desigual nas respostas médias condicionais dos participantes. Isso é ilustrado abaixo:
Neste gráfico, ignoramos as múltiplas observações que temos para cada sujeito em cada condição e, em vez disso, apenas plotamos as duas médias aleatórias de cada sujeito, com uma linha conectando-as, representando a inclinação aleatória desse sujeito. (São dados de 10 assuntos hipotéticos, não os dados publicados no OP.)
Na coluna da esquerda, onde há uma forte correlação negativa de interceptação de inclinação, as linhas de regressão se espalham para a esquerda em relação ao pontoX=0 . Como você pode ver claramente na figura, isso leva a uma maior variação nas médias aleatórias dos sujeitos na condição X=−1 que na condição X=1 .
A coluna à direita mostra a imagem invertida desse padrão. Nesse caso, há uma maior variação nas médias aleatórias dos sujeitos na condiçãoX=1 que na condição X=−1 .
A coluna no meio mostra o que acontece quando as inclinações e interceptações aleatórias não são correlacionadas. Isso significa que as linhas de regressão se espalham para a esquerda exatamente como se espalham para a direita, em relação ao pontoX=0 . Isso implica que as variações das médias dos sujeitos nas duas condições são iguais.
É crucial aqui que usamos um esquema de codificação de contraste de soma para zero, e não códigos fictícios (ou seja, não definimos os grupos emX=0 vs. X=1 ). É somente sob o esquema de codificação de contraste que temos essa relação em que as variações são iguais se e somente se a correlação intercepto-inclinação é 0. A figura abaixo tenta construir essa intuição:
O que esta figura mostra é o mesmo conjunto de dados exato nas duas colunas, mas com a variável independente codificada de duas maneiras diferentes. Na coluna da esquerda, usamos códigos de contraste - essa é exatamente a situação da primeira figura. Na coluna à direita, usamos códigos fictícios. Isso altera o significado das interceptações - agora as interceptações representam as respostas previstas dos sujeitos no grupo de controle. O painel inferior mostra a conseqüência dessa mudança, a saber, que a correlação entre intercepto e inclinação não está mais perto de 0, mesmo que os dados sejam os mesmos em um sentido profundo e as variações condicionais sejam iguais nos dois casos. Se isso ainda não parece fazer muito sentido, estudar essa resposta anterior, em que falo mais sobre esse fenômeno, pode ajudar.
Prova
Sejayijk a j ésima resposta do i sujeito na condição k . (Temos apenas duas condições aqui, então k é apenas 1 ou 2.) Então o modelo misto pode ser escrito
yijk=αi+βixk+eijk,
onde α i são os assuntos interceptações aleatórias e tem variância σ 2 α , β i são a inclinação aleatória dos sujeitos e têm variação σ 2 β , eαi σ2α βi σ2β eijk é o termo de erro no nível de observação ecov(αi,βi)=σαβ .
Queremos mostrar quevar(αi+βix1)=var(αi+βix2)⇔σαβ=0.
Começando com o lado esquerdo desta implicação, temosvar ( αEu+ βEux1)σ2α+ x21σ2β+ 2 x1σα βσ2β( x21- x22)+2σαβ(x1−x2)=var(αi+βix2)=σ2α+x22σ2β+2x2σαβ=0.
Códigos de contraste soma a zero implica quex1+x2=0 e x21=x22=x2 . Em seguida, podemos reduzir ainda mais a última linha acima para
σ2β(x2−x2)+2σαβ(x1+x1)σαβ=0=0,
que é o que queríamos provar. (Para estabelecer a outra direção da implicação, podemos apenas seguir os mesmos passos ao contrário.)
Para reiterar, isso mostra que, se a variável independente é codificada por contraste (soma a zero) , as variações das médias aleatórias dos sujeitos em cada condição são iguais se e somente se a correlação entre inclinações aleatórias e interceptações aleatórias for 0. A chave O ponto de partida de tudo isso é que testar a hipótese nula de queσαβ=0 testará a hipótese nula de variâncias iguais descritas pelo OP.
Isso NÃO funciona se a variável independente for, digamos, codificada como fictícia. Especificamente, se ligue os valoresx1=0 e x2=1 nas equações acima, descobrimos que
var(αi)=var(αi+βi)⇔σαβ=−σ2β2.
fonte
(1 | subject)
dummy
Você pode testar a significância dos parâmetros do modelo com a ajuda de intervalos de confiança estimados para os quais o pacote lme4 tem a
confint.merMod
função.inicialização (consulte, por exemplo, Intervalo de confiança na inicialização )
perfil de probabilidade (ver, por exemplo, qual é a relação entre a probabilidade do perfil e os intervalos de confiança? )
Há também um método,
'Wald'
mas isso é aplicado apenas a efeitos fixos.Também existe algum tipo de expressão anova (razão de verossimilhança) no pacote
lmerTest
que é chamadoranova
. Mas eu não consigo entender isso. A distribuição das diferenças no logLikelihood, quando a hipótese nula (variação zero para o efeito aleatório) for verdadeira é não distribuída por qui-quadrado (possivelmente quando o número de participantes e tentativas for alto, o teste da razão de verossimilhança poderá fazer sentido).Variação em grupos específicos
Para obter resultados de variação em grupos específicos, você pode remameter
Onde adicionamos duas colunas ao quadro de dados (isso é necessário apenas se você deseja avaliar 'controle' e 'experimental' não correlacionados, a função
(0 + condition || participant_id)
não levaria à avaliação dos diferentes fatores na condição de não correlacionados)Agora
lmer
dará variação para os diferentes gruposE você pode aplicar os métodos de perfil a eles. Por exemplo, agora o confint fornece intervalos de confiança para o controle e a variação do esforço.
Simplicidade
Você pode usar a função de probabilidade para obter comparações mais avançadas, mas existem muitas maneiras de fazer aproximações ao longo da estrada (por exemplo, você pode fazer um teste conservador de anova / lrt, mas é isso que você deseja?).
Nesse ponto, fico me perguntando qual é realmente o ponto dessa comparação (não tão comum) entre as variações. Eu me pergunto se isso começa a se tornar muito sofisticado. Por que a diferença entre as variações em vez da proporção entre as variações (que se refere à distribuição F clássica)? Por que não apenas relatar intervalos de confiança? Precisamos dar um passo atrás e esclarecer os dados e a história que devemos contar, antes de seguirmos caminhos avançados que podem ser supérfluos e com pouco contato com o assunto estatístico e as considerações estatísticas que são realmente o tópico principal.
Eu me pergunto se alguém deveria fazer muito mais do que simplesmente declarar os intervalos de confiança (o que pode realmente dizer muito mais do que um teste de hipóteses. Um teste de hipóteses dá uma resposta sim não, mas não há informações sobre a expansão real da população. Dados suficientes que você possa faça qualquer pequena diferença para ser relatada como uma diferença significativa). Para aprofundar o assunto (para qualquer finalidade), requer, acredito, uma questão de pesquisa mais específica (definida de maneira restrita), a fim de guiar o mecanismo matemático para fazer as devidas simplificações (mesmo quando um cálculo exato for viável ou quando pode ser aproximado por simulações / bootstrapping, mesmo que em algumas configurações ainda exija alguma interpretação apropriada). Compare com o teste exato de Fisher para resolver exatamente uma pergunta (específica) (sobre tabelas de contingência),
Exemplo simples
Para fornecer um exemplo da simplicidade possível, mostro abaixo uma comparação (por simulações) com uma avaliação simples da diferença entre as duas variações de grupo com base em um teste F realizado pela comparação de variações nas respostas médias individuais e realizado comparando as variações derivadas do modelo misto.
Você pode ver isso na simulação do gráfico abaixo, onde, além da pontuação F com base na amostra, uma pontuação F é calculada com base nas variações previstas (ou somas de erro ao quadrado) do modelo.
Você pode ver que há alguma diferença. Essa diferença pode dever-se ao fato de que o modelo linear de efeitos mistos está obtendo as somas de erro ao quadrado (para o efeito aleatório) de uma maneira diferente. E esses termos de erro ao quadrado não são (mais) bem expressos como uma distribuição qui-quadrado simples, mas ainda estão intimamente relacionados e podem ser aproximados.
Portanto, o modelo baseado nos meios é muito exato. Mas é menos poderoso. Isso mostra que a estratégia correta depende do que você deseja / precisa.
No exemplo acima, quando você define os limites da cauda direita em 2,1 e 3,1, obtém aproximadamente 1% da população no caso de variância igual (respectivamente 103 e 104 dos 10.000 casos), mas no caso de variância desigual, esses limites diferem muito (dando 5334 e 6716 dos casos)
código:
fonte
sim_1 ~ condition + (0 + condition | participant_id)"
Nesse caso, você obtém uma parametrização em dois parâmetros (um para cada grupo) em vez de dois parâmetros, um para a interceptação e outro para o efeito (que precisam ser combinados para os grupos).car::linearHypothesisTest
( math.furman.edu/~dcs/courses/math47/R/library/car/html/… ), que permite ao usuário testar hipóteses arbitrárias com um modelo ajustado. No entanto, eu teria que usar o método de @ amoeba para obter as duas interceptações aleatórias no mesmo modelo ajustado para que elas possam ser comparadas com esta função. Também estou um pouco incerto quanto à validade do método.Uma maneira relativamente direta pode ser o uso de testes de razão de verossimilhança,
anova
conforme descrito naslme4
Perguntas frequentes .Começamos com um modelo completo no qual as variações são irrestritas (ou seja, duas variações diferentes são permitidas) e, em seguida, ajustamos um modelo restrito no qual as duas variações são consideradas iguais. Nós simplesmente compará-los com
anova()
(note que eu definirREML = FALSE
emboraREML = TRUE
comanova(..., refit = FALSE)
é completamente viável ).No entanto, este teste é provavelmente conservador . Por exemplo, o FAQ diz:
Existem várias alternativas:
Simule a distribuição correta usando
RLRsim
(como também descrito nas Perguntas frequentes).Vou demonstrar a segunda opção da seguinte maneira:
Como podemos ver, o resultado sugere que
REML = TRUE
, se tivéssemos obtido resultados exatos. Mas isso é deixado como um exercício para o leitor.Em relação ao bônus, não tenho certeza se
RLRsim
permite testes simultâneos de vários componentes, mas, se houver, isso pode ser feito da mesma maneira.Resposta ao comentário:
Não tenho certeza de que esta pergunta possa receber uma resposta razoável.
Então, inclinações aleatórias afetam a interceptação aleatória? Em certo sentido, isso pode fazer sentido, pois permite a cada nível do fator de agrupamento um efeito completamente idiossincrático para cada condição. No final, estimamos dois parâmetros idiossincráticos para duas condições. No entanto, acho que a distinção entre o nível geral capturado pela interceptação e o efeito específico da condição capturado pela inclinação aleatória é importante e, em seguida, a inclinação aleatória não pode realmente afetar a interceptação aleatória. No entanto, ele ainda permite que cada nível do fator de agrupamento seja idiossincrático separadamente para cada nível da condição.
No entanto, meu teste ainda faz o que a pergunta original quer. Ele testa se a diferença nas variações entre as duas condições é zero. Se for zero, as variações nas duas condições são iguais. Em outras palavras, somente se não houver necessidade de uma inclinação aleatória é que a variação nas duas condições é idêntica. Espero que faça sentido.
fonte
contr.treatment
) para os quais a condição de controle é a referência (ou seja, para a qual a interceptação aleatória é calculada). A parametrização que proponho usar contrastes de soma (iecontr.sum
) e a interceptação é a grande média. Sinto que faz mais sentido testar se a diferença é nula quando a interceptação é a grande média em vez da condição de controle (mas escrever isso sugere que pode ser relativamente inconseqüente). Você pode ler as páginas 24 a 26 de: singmann.org/download/publications/…condition
: permite que a interceptação aleatória varie entre os níveis decondition
. Isso é verdade?m_full
vs.m_full2b
. Ou seja: as variações das respostas médias condicionais dos participantes em A vs. B são desiguais se a correlação aleatória interceptar-inclinação for diferente de zero - importante, sob a parametrização da codificação de contraste soma-zero . Testar a variação aleatória da inclinação não é necessário. Tentando pensar como explicar isso de forma sucinta ...Seu modelo
já permite que a variação entre sujeitos na condição de controle seja diferente da variação entre sujeitos na condição experimental. Isso pode ser explicitado por uma parametrização equivalente:
A matriz de covariância aleatória agora tem uma interpretação mais simples:
Aqui, as duas variações são precisamente as duas variações nas quais você está interessado: a variação [entre sujeitos] das respostas médias condicionais na condição de controle e a mesma na condição experimental. No seu conjunto de dados simulado, eles são 0,25 e 0,21. A diferença é dada por
e é igual a 0,039. Você deseja testar se é significativamente diferente de zero.
EDIT: percebi que o teste de permutação que descrevi abaixo está incorreto; não funcionará como pretendido se os meios na condição controle / experimental não forem os mesmos (porque as observações não podem ser trocadas sob o valor nulo). Pode ser uma idéia melhor inicializar assuntos (ou assuntos / itens no caso Bonus) e obter o intervalo de confiança para
delta
.Vou tentar corrigir o código abaixo para fazer isso.
Sugestão original baseada em permutação (incorreta)
Costumo achar que alguém pode se salvar de muitos problemas fazendo um teste de permutação. De fato, neste caso, é muito fácil de configurar. Permitamos controle / condições experimentais para cada sujeito separadamente; então qualquer diferença nas variações deve ser eliminada. Repetir isso muitas vezes produzirá a distribuição nula para as diferenças.
(Eu não programa em R; todo mundo sinta-se à vontade para reescrever o seguinte em um estilo R melhor.)
Executar isso gera o valor pp = 0,7 . Pode-se aumentar
nrep
para 1000 ou mais.Exatamente a mesma lógica pode ser aplicada no seu caso de bônus.
fonte
sim_1 ~ 0 + condition + (0 + dummy(condition, "control") + dummy(condition, "experimental") | participant_id)
formulação e obter o mesmo resultado da minha resposta.Olhando para esse problema de uma perspectiva um pouco diferente e partindo da forma "geral" do modelo linear misto, temosyeu j k= μ + αj+ deu j+ eeu j k,dEu∼ N( 0 , Σ ) ,eeu j k∼ N( 0 , σ2)
Onde αj é o efeito fixo do j condição e dEu= ( deu 1, … , Di J)⊤ é um vetor aleatório (acho que alguns chamam de efeito aleatório com valor vetorial) para o Eu participante do j condição. yeu 1 k e yeu 2 k que vou denotar como UMA e B no que se segue. Portanto, a matriz de covariância do vetor aleatório bidimensionaldEu é da forma geral
No seu exemplo, temos duas condições
com não negativoσ2UMA e σ2B .
Vamos primeiro ver como a versão re-parametrizada doΣ parece quando usamos contrastes de soma.
A variação da interceptação, que corresponde à média geral, é
A variação do contraste é
E a covariância entre o intercepto e o contraste é
Assim, o re-parametrizadoΣ é
Configurando o parâmetro de covariânciaσ12 a zero chegamos
que, como @Jake Westfall derivou um pouco diferente, testa a hipótese de variâncias iguais quando comparamos um modelo sem esse parâmetro de covariância com um modelo em que o parâmetro de covariância ainda está incluído / não está definido como zero.
Notavelmente, a introdução de outro fator de agrupamento aleatório cruzado (como estímulos) não altera a comparação do modelo que deve ser feita, ou seja,
anova(mod1, mod2)
(opcionalmente com o argumentorefit = FALSE
ao usar a estimativa REML) ondemod1
emod2
são definidos como @Jake Westfall.Tirandoσ12 e o componente de variação para o contraste σ22 (o que @Henrik sugere) resulta em
que testa a hipótese de que as variações nas duas condições são iguais e que são iguais à covariância (positiva) entre as duas condições.
Quando temos duas condições, um modelo que se ajusta a uma matriz de covariância com dois parâmetros em uma estrutura simétrica composta (positiva) também pode ser escrito como
ou (usando a variável / fator categórico
condition
)com
Ondeσ21 e σ22 são os parâmetros de variação para o participante e a interceptação participante-condição-combinação, respectivamente. Note que esteΣ possui um parâmetro de covariância não negativo.
Abaixo vemos que
mod1
,mod3
emod4
deu acessos equivalentes:Com os contrastes do tratamento (o padrão em R ), o parametrizadoΣ é
Ondeσ21 é o parâmetro de variação para a interceptação (condição UMA ), σ22 o parâmetro de variação para o contraste (A - B ) e σ12 o parâmetro de covariância correspondente.
Podemos ver que nem a configuraçãoσ12 para zero nem configuração σ22 zerar (apenas) a hipótese de variâncias iguais.
No entanto, como mostrado acima, ainda podemosΣ para este modelo.
mod4
testar a hipótese, pois a alteração dos contrastes não afeta a parametrização defonte