Como obter um valor-p “geral” e tamanho de efeito para um fator categórico em um modelo misto (lme4)?

28

Gostaria de obter um valor-p e um tamanho de efeito de uma variável categórica independente (com vários níveis) - que é "geral" e não para cada nível separadamente, como é o resultado normal de lme4R. É exatamente como a coisa que as pessoas relatam ao executar uma ANOVA.

Como posso conseguir isso?

user3288202
fonte
Quais estatísticas você deseja exatamente? Você pode usar a anova()função para obter uma tabela anova com modelos lineares mistos, assim como nos modelos lineares.
smillig
Eu tentei anova (), mas ele me dá Df, Sq Sq, Sq Sq e F valor. Não vejo o tamanho do efeito ep valor. voce tem alguma ideia sobre isso?
usar o seguinte comando
1
Pelo tamanho do efeito, não é algo média como um equivalente a ? No que diz respeito aos valores-p, há um longo e substancial debate em torno de suas estimativas e em torno da implementação deles . Veja a discussão nesta pergunta para obter mais detalhes. R2lme4
smillig
Obrigado pelo link, Smilig. Isso significa que, como há um problema no cálculo do valor de p, o tamanho do efeito do fator em geral também é um problema?
user3288202
Eles não são problemas diretamente relacionados. No entanto, lembre-se de que um modelo linear misto não se comporta exatamente como um modelo linear sem efeitos aleatórios; portanto, uma medida que pode ser apropriada para o modelo linear não generaliza necessariamente para modelos mistos.
smillig

Respostas:

48

Ambos os conceitos mencionados (valores de p e tamanhos de efeito de modelos lineares mistos) têm problemas inerentes. Com relação ao tamanho do efeito , citando Doug Bates, o autor original de lme4,

R2

Para obter mais informações, você pode olhar para este tópico , este tópico e esta mensagem . Basicamente, a questão é que não existe um método acordado para a inclusão e decomposição da variação dos efeitos aleatórios no modelo. No entanto, existem alguns padrões usados. Se você der uma olhada no Wiki configurado para / pela lista de discussão r-sig-mixed-models , existem algumas abordagens listadas.

Um dos métodos sugeridos analisa a correlação entre os valores ajustados e os observados. Isso pode ser implementado no R, conforme sugerido por Jarrett Byrnes em um desses threads:

r2.corr.mer <- function(m) {
  lmfit <-  lm(model.response(model.frame(m)) ~ fitted(m))
  summary(lmfit)$r.squared
}

Por exemplo, digamos que estimamos o seguinte modelo misto linear:

set.seed(1)
d <- data.frame(y = rnorm(250), x = rnorm(250), z = rnorm(250),
                g = sample(letters[1:4], 250, replace=T)       )
library(lme4)
summary(fm1 <- lmer(y ~ x + (z | g), data=d))
# Linear mixed model fit by REML ['lmerMod']
# Formula: y ~ x + (z | g)
#    Data: d
# REML criterion at convergence: 744.4
# 
# Scaled residuals: 
#     Min      1Q  Median      3Q     Max 
# -2.7808 -0.6123 -0.0244  0.6330  3.5374 
# 
# Random effects:
#  Groups   Name        Variance Std.Dev. Corr 
#  g        (Intercept) 0.006218 0.07885       
#           z           0.001318 0.03631  -1.00
#  Residual             1.121439 1.05898       
# Number of obs: 250, groups: g, 4
# 
# Fixed effects:
#             Estimate Std. Error t value
# (Intercept)  0.02180    0.07795   0.280
# x            0.04446    0.06980   0.637
# 
# Correlation of Fixed Effects:
#   (Intr)
# x -0.005

Podemos calcular o tamanho do efeito usando a função definida acima:

r2.corr.mer(fm1)
# [1] 0.0160841

Ω0 02

1-var(residuals(fm1))/(var(model.response(model.frame(fm1))))
# [1] 0.01173721  # Usually, it would be even closer to the value above

Com relação aos valores-p , essa é uma questão muito mais controversa (pelo menos na comunidade R / lme4). Veja as discussões nas perguntas aqui , aqui e aqui, entre muitas outras. Fazendo referência à página Wiki novamente, existem algumas abordagens para testar hipóteses sobre efeitos em modelos lineares mistos. Listado do "pior ao melhor" (de acordo com os autores da página da Wiki que acredito incluir Doug Bates e Ben Bolker, que contribui muito aqui):

  • Testes Z de Wald
  • Para LMMs aninhados e balanceados, onde o df pode ser calculado: testes t de Wald
  • Teste de razão de verossimilhança, configurando o modelo para que o parâmetro possa ser isolado / eliminado (via anovaou drop1) ou via perfis de verossimilhança de computação
  • Intervalos de confiança MCMC ou de parametrização de inicialização

Eles recomendam a abordagem de amostragem Monte Carlo da cadeia de Markov e também listam várias possibilidades para implementá-la a partir de abordagens pseudo e totalmente bayesianas, listadas abaixo.

Pseudo-Bayesiano:

  • Amostragem post-hoc, tipicamente (1) assumindo antecedentes planos e (2) partindo do MLE, possivelmente usando a estimativa aproximada de variância-covariância para escolher uma distribuição candidata
  • Via mcmcsamp(se disponível para o seu problema: por exemplo, LMMs com efeitos aleatórios simples - não GLMMs ou efeitos aleatórios complexos)
    Via pvals.fncno languageRpacote, um wrapper para mcmcsamp)
  • No AD Model Builder, possivelmente por meio do glmmADMBpacote (use a mcmc=TRUEopção) ou do R2admbpacote (escreva sua própria definição de modelo no AD Model Builder) ou fora de R
  • Através da simfunção do armpacote (simula o posterior apenas para os coeficientes beta (efeito fixo)

Abordagens totalmente bayesianas:

  • Através do MCMCglmmpacote
  • Usando glmmBUGS(uma interface R / wrapper do WinBUGS )
  • Usando JAGS / WinBUGS / OpenBUGS etc., através dos rjags/ r2jags/ R2WinBUGS/ BRugspackages

Para fins de ilustração, para mostrar como isso pode ser, abaixo é uma MCMCglmmestimativa usando o MCMCglmmpacote que você verá produz resultados semelhantes aos do modelo acima e possui algum tipo de valor p Bayesiano:

library(MCMCglmm)
summary(fm2 <- MCMCglmm(y ~ x, random=~us(z):g, data=d))
# Iterations = 3001:12991
# Thinning interval  = 10
#  Sample size  = 1000 
# 
#  DIC: 697.7438 
# 
#  G-structure:  ~us(z):g
# 
#       post.mean  l-95% CI u-95% CI eff.samp
# z:z.g 0.0004363 1.586e-17 0.001268    397.6
# 
#  R-structure:  ~units
# 
#       post.mean l-95% CI u-95% CI eff.samp
# units    0.9466   0.7926    1.123     1000
# 
#  Location effects: y ~ x 
# 
#             post.mean l-95% CI u-95% CI eff.samp pMCMC
# (Intercept)  -0.04936 -0.17176  0.07502     1000 0.424
# x            -0.07955 -0.19648  0.05811     1000 0.214

Eu espero que isso ajude de algum jeito. Eu acho que o melhor conselho para alguém que começa com modelos mistos lineares e tenta estimar em R é ler os faqs do Wiki de onde a maioria dessas informações foi extraída. É um excelente recurso para todos os tipos de temas de efeitos mistos, do básico ao avançado, da modelagem à plotagem.

smillig
fonte
Muito obrigado smilig. Portanto, talvez eu não relate o tamanho do efeito para os parâmetros gerais.
usar o seguinte comando
r2
3
+6, impressionantemente claro, abrangente e bem anotado.
gung - Restabelece Monica
1
Além disso, você pode dar uma olhada no pacote afex e principalmente na função mista. veja aqui
iniciante
6

Em relação ao cálculo dos valores de significância ( p ), Luke (2016) Avaliando a significância em modelos lineares de efeitos mistos em R relata que o método ideal é a aproximação de Kenward-Roger ou Satterthwaite para graus de liberdade (disponível em R com pacotes como lmerTestou afex)

Abstrato

Modelos de efeitos mistos estão sendo usados ​​com mais frequência na análise de dados experimentais. No entanto, no pacote lme4 em R, os padrões para avaliar a significância dos efeitos fixos nesses modelos (ou seja, obter valores de p) são um tanto vagos. Existem boas razões para isso, mas como muitos pesquisadores que estão usando esses modelos são obrigados a relatar valores de p, é necessário algum método para avaliar a importância da saída do modelo. Este artigo relata os resultados de simulações mostrando que os dois métodos mais comuns para avaliar a significância, usando testes de razão de verossimilhança e aplicando a distribuição z aos valores de Wald t da saída do modelo (t-as-z), são um pouco anti-conservadores, especialmente para tamanhos de amostra menores. Outros métodos para avaliar a significância,Os resultados dessas simulações sugerem que as taxas de erro do tipo 1 são mais próximas de 0,05 quando os modelos são ajustados usando REML e os valores de p são derivados usando as aproximações de Kenward-Roger ou Satterthwaite, pois essas aproximações produzem taxas de erro aceitáveis ​​do tipo 1, mesmo para menores amostras.

(enfase adicionada)

Pablo Bernabeu
fonte
4
+1 Obrigado por compartilhar este link. Vou apenas comentar brevemente que a aproximação de Kenward-Roger está disponível no lmerTestpacote.
Ameba diz Reinstate Monica
5

Eu uso o lmerTestpacote. Isso inclui convenientemente uma estimativa do valor p na anova()saída para minhas análises de MLM, mas não fornece um tamanho de efeito pelas razões indicadas em outros posts aqui.

Bruna
fonte
1
No meu caso, prefiro a comparação aos pares usando lsmeans, pois me fornece todos os pares de contrastes, incluindo os valores de p. Se eu usar o lmerTest, precisarei executar o modelo seis vezes com diferentes linhas de base para ver todos os pares de contrastes.
user3288202