Na prática, como as pessoas lidam com a ANOVA quando os dados não atendem exatamente às premissas?

19

Esta não é uma pergunta estritamente estatística - eu posso ler todos os livros sobre suposições da ANOVA - estou tentando descobrir como os analistas de trabalho reais lidam com dados que não atendem completamente às suposições. Passei por muitas perguntas neste site em busca de respostas e continuo encontrando posts sobre quando não usar o ANOVA (em um contexto matemático idealizado e abstrato) ou como fazer algumas das coisas que descrevi abaixo em R. I estou realmente tentando descobrir quais decisões as pessoas realmente tomam e por quê.

Estou executando análises em dados agrupados de árvores (árvores reais, não estatísticas) em quatro grupos. Eu tenho dados para cerca de 35 atributos para cada árvore e estou analisando cada atributo para determinar se os grupos diferem significativamente nesse atributo. No entanto, em alguns casos, as suposições da ANOVA são levemente violadas porque as variações não são iguais (de acordo com o teste de Levene, usando alfa = 0,05).

Na minha opinião, minhas opções são: 1. Poder transformar os dados e verificar se ele altera o valor do Levene. 2. Use um teste não paramétrico como um Wilcoxon (se sim, qual?). 3. Faça algum tipo de correção no resultado da ANOVA, como um Bonferroni (não tenho certeza se existe algo assim?). Eu tentei as duas primeiras opções e obtive resultados ligeiramente diferentes - em alguns casos, uma abordagem é significativa e a outra não. Tenho medo de cair na armadilha de pesca com valor p e estou procurando conselhos que me ajudem a justificar qual abordagem usar.

Também li algumas coisas que sugerem que a heterocedasticidade não é realmente um grande problema para a ANOVA, a menos que os meios e as variações estejam correlacionados (ou seja, ambos aumentem juntos), então talvez eu possa simplesmente ignorar o resultado do Levene, a menos que veja um padrão assim? Se sim, existe um teste para isso?

Por fim, devo acrescentar que estou fazendo essa análise para publicação em um periódico revisado por pares, portanto, qualquer que seja a abordagem adotada, deve passar para os revisores. Portanto, se alguém puder fornecer links para exemplos semelhantes publicados, isso seria fantástico.

Jas Max
fonte
3
Independentemente de você usar ou não R, pode ser útil ler minha resposta aqui: Alternativas à ANOVA unidirecional para dados heterocedásticos , que discute alguns desses problemas.
gung - Restabelece Monica

Respostas:

18

Estou tentando descobrir como os analistas de trabalho reais lidam com dados que não atendem completamente às suposições.

Depende das minhas necessidades, quais suposições são violadas, de que maneira, quão mal, quanto isso afeta a inferência e, às vezes, o tamanho da amostra.

Estou executando análises de dados agrupados de árvores em quatro grupos. Eu tenho dados para cerca de 35 atributos para cada árvore e estou analisando cada atributo para determinar se os grupos diferem significativamente nesse atributo. No entanto, em alguns casos, as suposições da ANOVA são levemente violadas porque as variações não são iguais (de acordo com o teste de Levene, usando alfa = 0,05).

1) Se os tamanhos das amostras forem iguais, você não terá muito problema. A ANOVA é bastante (nível) robusta para diferentes variações se os n são iguais.

2) testar a igualdade de variância antes de decidir se deve assumir que isso é recomendado por vários estudos. Se você tiver alguma dúvida real de que eles serão quase iguais, é melhor simplesmente assumir que são desiguais.

Algumas referências:

Zimmerman, DW (2004),
"Uma nota sobre testes preliminares de igualdade de variâncias".
Br. J. Math. Estado. Psychol. , Maio ; 57 (Pt 1): 173-81.
http://www.ncbi.nlm.nih.gov/pubmed/15171807

Henrik dá três referências aqui

3) É o tamanho do efeito que importa, e não se sua amostra é grande o suficiente para dizer que são significativamente diferentes. Portanto, em amostras grandes, uma pequena diferença de variância será altamente significativa pelo teste de Levene, mas essencialmente não terá conseqüências em seu impacto. Se as amostras são grandes e o tamanho do efeito - a razão de variações ou as diferenças nas variações - está bem próximo do que deveriam ser, então o valor de p não tem conseqüências. (Por outro lado, em amostras pequenas, um bom valor p grande é de pouco conforto. De qualquer maneira, o teste não responde à pergunta certa.)

Observe que há um ajuste do tipo Welch-Satterthwaite na estimativa de erro padrão residual e df na ANOVA, assim como nos testes t de duas amostras.

  1. Use um teste não paramétrico como um Wilcoxon (se sim, qual?).

Se você estiver interessado em alternativas de mudança de local, ainda estará assumindo um spread constante. Se você estiver interessado em alternativas muito mais gerais, talvez considere; a amostra k equivalente a um teste de Wilcoxon é um teste de Kruskal-Wallis.

Faça algum tipo de correção no resultado da ANOVA

Veja minha sugestão acima de considerar Welch-Satterthwaite, esse é um 'tipo de correção'.

(Como alternativa, você pode converter sua ANOVA como um conjunto de testes t pareados do tipo Welch, caso em que você provavelmente desejaria ver um Bonferroni ou algo semelhante)

Também li algumas coisas que sugerem que a heterocedasticidade não é realmente um grande problema para a ANOVA, a menos que os meios e as variações estejam correlacionados (ou seja, ambos aumentam juntos)

Você teria que citar algo assim. Tendo analisado várias situações com testes t, não acho que seja claramente verdade, então gostaria de ver por que eles pensam assim; talvez a situação seja restrita de alguma maneira. Seria bom que fosse o caso, porque modelos lineares bastante generalizados podem ajudar nessa situação.

Por fim, devo acrescentar que estou fazendo essa análise para publicação em um periódico revisado por pares, portanto, qualquer que seja a abordagem adotada, deve passar para os revisores.

É muito difícil prever o que pode satisfazer seus revisores. A maioria de nós não trabalha com árvores.

Glen_b -Reinstate Monica
fonte
12

Na verdade, não é muito difícil lidar com a heterocedasticidade em modelos lineares simples (por exemplo, modelos ANOVA de uma ou duas vias).

Robustez da ANOVA

Primeiro, como outros observaram, a ANOVA é surpreendentemente robusta a desvios da suposição de variações iguais, especialmente se você tiver dados aproximadamente equilibrados (número igual de observações em cada grupo). Testes preliminares sobre variações iguais, por outro lado, não são (embora o teste de Levene seja muito melhor do que o teste F normalmente ensinado em livros didáticos). Como George Box colocou:

Fazer o teste preliminar de variações é como colocar no mar um barco a remo para descobrir se as condições são suficientemente calmas para um transatlântico sair do porto!

Embora a ANOVA seja muito robusta, como é muito fácil levar em conta a heterocedaticidade, há poucas razões para não fazer isso.

Testes não paramétricos

Se você está realmente interessado em diferenças de médias , os testes não paramétricos (por exemplo, o teste de Kruskal-Wallis) não são realmente úteis. Eles testam diferenças entre grupos, mas geralmente não testam diferenças de médias.

Dados de exemplo

Vamos gerar um exemplo simples de dados em que alguém gostaria de usar ANOVA, mas onde a suposição de variâncias iguais não é verdadeira.

set.seed(1232)
pop = data.frame(group=c("A","B","C"),
                 mean=c(1,2,5),
                 sd=c(1,3,4))
d = do.call(rbind, rep(list(pop),13))
d$x = rnorm(nrow(d), d$mean, d$sd)

Temos três grupos, com diferenças (claras) em médias e variações:

stripchart(x ~ group, data=d)

Stripchart mostrando dados de exemplo.

ANOVA

Não é de surpreender que uma ANOVA normal lide com isso muito bem:

> mod.aov = aov(x ~ group, data=d)
> summary(mod.aov)
            Df Sum Sq Mean Sq F value  Pr(>F)    
group        2  199.4   99.69   13.01 5.6e-05 ***
Residuals   36  275.9    7.66                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Então, quais grupos diferem? Vamos usar o método HSD de Tukey:

> TukeyHSD(mod.aov)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = x ~ group, data = d)

$group
        diff        lwr      upr     p adj
B-A 1.736692 -0.9173128 4.390698 0.2589215
C-A 5.422838  2.7688327 8.076843 0.0000447
C-B 3.686146  1.0321403 6.340151 0.0046867

Com um valor P de 0,26, não podemos reivindicar nenhuma diferença (em médias) entre o grupo A e B. E mesmo se não levássemos em conta que fizemos três comparações, não obteríamos um P baixo - valor ( P  = 0,12):

> summary.lm(mod.aov)
[…]
Coefficients:
            Estimate Std. Error t value  Pr(>|t|)    
(Intercept)   0.5098     0.7678   0.664     0.511    
groupB        1.7367     1.0858   1.599     0.118    
groupC        5.4228     1.0858   4.994 0.0000153 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.768 on 36 degrees of freedom

Por que é que? Com base no enredo, não é uma diferença bastante clara. O motivo é que a ANOVA assume variações iguais em cada grupo e estima um desvio padrão comum de 2,77 (mostrado como 'Erro padrão residual' na summary.lmtabela, ou você pode obtê-lo tomando a raiz quadrada do quadrado médio residual (7,66) na tabela ANOVA).

Mas o grupo A tem um desvio padrão (populacional) de 1, e essa superestimação de 2,77 torna (desnecessariamente) difícil obter resultados estatisticamente significativos, ou seja, temos um teste com (muito) energia baixa.

'ANOVA' com variações desiguais

Então, como ajustar um modelo adequado, que leve em consideração as diferenças nas variações? É fácil no R:

> oneway.test(x ~ group, data=d, var.equal=FALSE)
    One-way analysis of means (not assuming equal variances)

data:  x and group
F = 12.7127, num df = 2.000, denom df = 19.055, p-value = 0.0003107

Portanto, se você deseja executar uma 'ANOVA' unidirecional simples em R sem assumir variações iguais, use esta função. É basicamente uma extensão do (Welch) t.test()para duas amostras com variações desiguais.

Infelizmente, ele não funciona com TukeyHSD()(ou com a maioria das outras funções que você usa em aovobjetos), portanto, mesmo que tenhamos certeza de que existem diferenças entre os grupos, não sabemos onde elas estão.

Modelando a heterocedasticidade

A melhor solução é modelar as variações explicitamente. E é muito fácil no R:

> library(nlme)
> mod.gls = gls(x ~ group, data=d,
                weights=varIdent(form= ~ 1 | group))
> anova(mod.gls)
Denom. DF: 36 
            numDF  F-value p-value
(Intercept)     1 16.57316  0.0002
group           2 13.15743  0.0001

Diferenças ainda significativas, é claro. Mas agora as diferenças entre o grupo A e B também se tornaram estatisticamente significativas ( P  = 0,025):

> summary(mod.gls)
Generalized least squares fit by REML
  Model: x ~ group
  […]
Variance function:
 Structure: Different standard
            deviations per stratum
 Formula: ~1 | group 
 Parameter estimates:
       A        B        C 
1.000000 2.444532 3.913382 

Coefficients:
               Value Std.Error  t-value p-value
(Intercept) 0.509768 0.2816667 1.809829  0.0787
groupB      1.736692 0.7439273 2.334492  0.0253
groupC      5.422838 1.1376880 4.766542  0.0000
[…]
Residual standard error: 1.015564 
Degrees of freedom: 39 total; 36 residual

Portanto, usar um modelo apropriado ajuda! Observe também que obtemos estimativas dos desvios padrão (relativos). O desvio padrão estimado para o grupo A pode ser encontrado na parte inferior de, resultados, 1,02. O desvio padrão estimado do grupo B é 2,44 vezes esse valor, ou 2,48, e o desvio padrão estimado do grupo C é similarmente 3,97 (tipo intervals(mod.gls)para obter intervalos de confiança para os desvios padrão relativos dos grupos B e C).

Corrigindo para vários testes

No entanto, devemos realmente corrigir vários testes. Isso é fácil usando a biblioteca 'multcomp'. Infelizmente, ele não possui suporte interno para objetos 'gls'; portanto, teremos que adicionar algumas funções auxiliares primeiro:

model.matrix.gls <- function(object, ...)
    model.matrix(terms(object), data = getData(object), ...)
model.frame.gls <- function(object, ...)
  model.frame(formula(object), data = getData(object), ...)
terms.gls <- function(object, ...)
  terms(model.frame(object),...)

Agora vamos ao trabalho:

> library(multcomp)
> mod.gls.mc = glht(mod.gls, linfct = mcp(group = "Tukey"))
> summary(mod.gls.mc)
[…]
Linear Hypotheses:
           Estimate Std. Error z value Pr(>|z|)    
B - A == 0   1.7367     0.7439   2.334   0.0480 *  
C - A == 0   5.4228     1.1377   4.767   <0.001 ***
C - B == 0   3.6861     1.2996   2.836   0.0118 *  

Ainda diferença estatisticamente significante entre o grupo A e o grupo B! ☺ E podemos obter intervalos de confiança (simultâneos) para as diferenças entre as médias do grupo:

> confint(mod.gls.mc)
[…]
Linear Hypotheses:
           Estimate lwr     upr    
B - A == 0 1.73669  0.01014 3.46324
C - A == 0 5.42284  2.78242 8.06325
C - B == 0 3.68615  0.66984 6.70245

Usando um modelo aproximadamente (aqui exatamente) correto, podemos confiar nesses resultados!

Observe que, para este exemplo simples, os dados do grupo C realmente não adicionam nenhuma informação sobre as diferenças entre o grupo A e B, pois modelamos as médias separadas e os desvios padrão para cada grupo. Poderíamos ter usado apenas testes t pareados, corrigidos para múltiplas comparações:

> pairwise.t.test(d$x, d$group, pool.sd=FALSE)
    Pairwise comparisons using t tests with non-pooled SD 

data:  d$x and d$group 

  A       B      
B 0.03301 -      
C 0.00098 0.02032

P value adjustment method: holm 

No entanto, para modelos mais complicados, por exemplo, modelos bidirecionais ou modelos lineares com muitos preditores, usar GLS (mínimos quadrados generalizados) e modelar explicitamente as funções de variação é a melhor solução.

E a função de variação não precisa simplesmente ser uma constante diferente em cada grupo; podemos impor estrutura a ele. Por exemplo, podemos modelar a variação como uma potência da média de cada grupo (e, portanto, só precisamos estimar um parâmetro, o expoente), ou talvez como o logaritmo de um dos preditores do modelo. Tudo isso é muito fácil com o GLS (e gls()no R).

Mínimos quadrados generalizados é IMHO, uma técnica de modelagem estatística muito subutilizada. Em vez de se preocupar com desvios das suposições do modelo, modele esses desvios!

Karl Ove Hufthammer
fonte
1
Obrigado pela resposta! Eu não entendo sobre o resultado de oneway.test () e gls () para variância desigual ANOVA (Welch ANOVA). O valor de p de oneway.test () é o valor de p = 0,0003107. Mas o valor de p de gls (x ~ grupo, dados = d, pesos = varIdent (formulário = ~ 1 | grupo)) é 0,0001. Por que esses dois resultados são diferentes?
WCMC
2
Há uma crescente preocupação com as correções para vários testes; acho que relatar valores p não corrigidos, juntamente com o número de comparações que você fez, é mais transparente. Especialmente porque você pode não estar interessado em todas as comparações pareadas ao testá-las em R, portanto, a correção será feita levando em consideração comparações que não são de interesse.
Nakx
7
  1. De fato, pode haver alguma transformação nos seus dados que produza uma distribuição aceitável normal. Obviamente, agora sua inferência é sobre os dados transformados, não os dados não transformados.

  2. Supondo que você esteja falando de uma ANOVA de mão única, o teste de Kruskal-Wallis é um análogo não paramétrico apropriado para a ANOVA de mão única. O teste de Dunn (não o teste da soma da classificação da variedade de jardins) é talvez o teste não paramétrico mais comum apropriado para comparações múltiplas post-hoc em pares, embora existam outros testes como o teste de Conover-Iman (estritamente mais poderoso que o teste de Dunn após rejeição) Kruskal-Wallis) eo teste de Dwass-Steele-Crichtlow-Fligner.

  3. α

A ANOVA é baseada em uma proporção de variações dentro do grupo e entre grupos. Não tenho muita certeza do que você entende por heterocedasticidade neste contexto, mas se você quer dizer variações desiguais entre grupos, isso me pareceria quebrar fundamentalmente a lógica da hipótese nula do teste.

Uma consulta simples do Google Scholar para "teste de Dunn", juntamente com um termo geral de sua disciplina, deve retornar muitos exemplos publicados.


Referências

Conover, WJ e Iman, RL (1979). Em procedimentos de comparações múltiplas . Relatório Técnico LA-7677-MS, Laboratório Científico Los Alamos.

Crichtlow, DE e Fligner, MA (1991). Em comparações múltiplas sem distribuição na análise de variação unidirecional . Comunicações em Estatística - Teoria e Métodos , 20 (1): 127.

Dunn, JO (1964). Comparações múltiplas usando somas de classificação . Technometrics , 6 (3): 241–252.

Alexis
fonte
2
Ok, obrigado por esta resposta, mas não estou completamente claro sobre o que você está dizendo. No que diz respeito à "heterocedasticidade", pensei que estava usando a palavra no sentido comum: "uma coleção de variáveis ​​aleatórias é heterocedástica se houver subpopulações que têm variabilidades diferentes das outras. Aqui, a" variabilidade "pode ​​ser quantificada pela variação ou qualquer outra medida de dispersão estatística. "- Wikipedia. Nos meus dados, as variações dos subgrupos são desiguais (de acordo com o teste de Levene), então eu as descrevi como heterocedásticas. Isso não está certo?
Jas Max
1
O que realmente estou tentando discutir é a diferença entre as estatísticas dos livros didáticos e o mundo real. Todo livro diz que "as variações devem ser iguais para a ANOVA", mas é claro que nunca são. Então, cortamos arbitrariamente em um ponto específico e mudamos para um teste diferente - se sim, em que ponto? No meu campo (biologia vegetal), a maioria das pessoas simplesmente usa qualquer teste que foi treinado para usar sem pensar muito. Eu não estou realmente satisfeito com isso. Eu adoraria sugestões de livros / sites que discutam o uso 'prático' de estatísticas - ou seja, qual teste usar quando e por quê. Obrigado pela sugestão do Dunn, isso ajuda.
Jas Max
2
Ah, a suposição de variâncias iguais são as variações populacionais e não as variações da amostra . Você pode deduzir que as variações populacionais são iguais ... por meio do teste do globo ocular, ou por algum outro, digamos, teste estatístico.
Alexis
1
Como você sabe alguma coisa sobre a variação da população se não avaliando a variação da amostra? Interpreto o p-val de um teste de Levene como "supondo que as variações populacionais sejam iguais, quais são as probabilidades de suas variações amostrais diferirem tanto assim". Se obtiver um p-val baixo, rejeito a hipótese de que as variações populacionais são iguais e não posso usar ANOVA. Kruskal-Wallace parece ser uma boa alternativa, mas é preferível transformar dados para atender às suposições da ANOVA e, em caso afirmativo, por que?
Jas Max
1
Além disso, o teste de Levene, p <0,05, é o teste e o ponto de corte apropriados para esta decisão? E quanto a O'Brien, Bartlett ... os resultados desses testes podem diferir substancialmente e eu realmente não sei qual usar - por isso vou com Levene porque parece ser o mais conservador. Mas talvez isso seja um exagero - talvez por ser rápido demais em abandonar a ANOVA, estou mudando para um teste que reduz desnecessariamente o poder estatístico da minha análise.
Jas Max
1

Parece-me que você está fazendo o trabalho dos pés e está tentando o seu melhor, mas está preocupado que seus esforços não sejam bons o suficiente para fazer com que seu trabalho seja publicado pelos revisores. Um problema do mundo real. Eu acho que todos os pesquisadores lutam com análises que parecem limítrofes ou até mesmo violam suposições de vez em quando. Afinal, existem milhões de artigos avaliando, por exemplo, os efeitos do tratamento em 3 pequenos grupos de camundongos com algo como 6 a 7 camundongos em cada grupo. Como saber se as suposições da Anova são satisfeitas em um artigo desse tipo!

Revisei um grande número de artigos, especialmente no campo da fisiopatologia cardiovascular, e nunca me sinto 100% certo se posso confiar nos dados ou não em um artigo que li. Mas para mim como um revisor, eu realmente tendem a pensar que as questões podem surgir em tão muitos níveis na ciência que provavelmente há pouco ponto em cavar muito fundo nas estatísticas - afinal, todo o conjunto de dados pode ser fabricado e eu nunca faria em um milhão de anos será capaz de dizer. Nesse sentido, sempre haverá um elemento de confiança nesse campo de trabalho, que os pesquisadores nunca devem abusar.

A sugestão mais real que eu daria é que você precisa pensar em tudo com muito cuidado antes de enviar e se certificar de que será capaz de responder com sinceridade a quaisquer perguntas feitas pelos revisores. Desde que você tenha feito o seu melhor, suas intenções são honestas e você dorme bem à noite, acho que você deve ficar bem.

Angus P
fonte
2
Não tenho certeza de que concordo em não ser capaz de detectar falsificações: já vi isso antes.
Alexis