Questão
As pontuações dos testes de três grupos de pessoas são salvas como vetores separados em R.
set.seed(1)
group1 <- rnorm(100, mean = 75, sd = 10)
group2 <- rnorm(100, mean = 85, sd = 10)
group3 <- rnorm(100, mean = 95, sd = 10)
Quero saber se existe uma diferença significativa nas medianas entre esses grupos. Eu sei que eu poderia testar o grupo 1 versus o grupo 2 usando o teste de Wilcoxon, assim.
wilcox.test(group1, group2)
No entanto, isso compara apenas dois grupos por vez, e eu gostaria de comparar os três simultaneamente. Eu gostaria de um teste estatístico que produza um valor de p no nível de significância 0,05. Alguém poderia ajudar?
Edit # 1 - Teste de mediana do humor
Seguindo a resposta sugerida pelo usuário Hibernating, tentei o teste mediano de Mood.
median.test <- function(x, y){
z <- c(x, y)
g <- rep(1:2, c(length(x), length(y)))
m <- median(z)
fisher.test(z < m, g)$p.value
}
median.test(group1, group2)
No entanto, essa abordagem me permite testar uma diferença significativa entre as medianas de apenas dois grupos por vez. Não tenho certeza de como usá-lo para comparar as medianas dos três simultaneamente.
Edit # 2 - Teste de Kruskal-Wallis
A resposta sugerida pelo usuário dmartin parece ser mais ou menos o que eu preciso e me permite testar todos os três grupos simultaneamente.
kruskal.test(list(group1, group2, group3))
Editar # 3
O usuário Greg Snow observa útil em sua resposta que o teste de Kruskal-Wallis é apropriado desde que faça suposições estritas que o tornem também um teste de meios.
fonte
median test
. Minha própria resposta / comentários está aqui .Respostas:
O teste de Kruskal-Wallis também pode ser utilizado, pois é uma ANOVA não paramétrica. Além disso, é frequentemente considerado mais poderoso que o teste mediano de Mood . Pode ser implementado em R usando o função kruskal.test no pacote de estatísticas em R.
Para responder à sua edição, a interpretação de KW é semelhante a uma ANOVA unidirecional. Um valor p significativo corresponde a rejeitar o nulo de que todas as três médias são iguais. Você deve usar um teste de acompanhamento (novamente, como uma ANOVA), para responder a perguntas sobre grupos específicos. Isso geralmente segue perguntas de pesquisa específicas que você possa ter. Apenas observando os parâmetros da simulação, todos os três grupos devem ser significativamente diferentes um do outro se você fizer um teste de acompanhamento (como todos os 1 DP separados por N = 100).
fonte
Primeiro, o teste de Wilcoxon (ou teste de Mann-Whitney) não é um teste de medianas (a menos que você faça suposições muito estritas que também o tornem um teste de médias). E para comparar mais de 2 grupos, o teste de Wilcoxon pode levar a alguns resultados paradoxais (consulte Dados de Efron ).
Como o teste de Wilcoxon é apenas um caso especial de teste de permutação e você está especificamente interessado nas medianas, sugiro um teste de permutação nas medianas.
Primeiro, escolha uma medida da diferença, algo como a maior das 3 medianas menos a menor das 3 (ou a variação das 3 medianas, ou o MAD, etc.).
Agora calcule sua estatística para os dados originais.
agrupar todos os dados em um conjunto e particionar aleatoriamente os valores em 3 grupos do
tamanhos iguais ao original e calcule a mesma estatística.
repita várias vezes (como 9998)
Compare como a estatística dos dados reais se compara à distribuição de todas as estatísticas do seu teste.
fonte
t.test
eaov
provavelmente seria bom também.Wilcoxon sum-rank test
, não se importaria em converter "Wilcox" para esse nome?wilcox.test
). Você poderia editar?O teste de mediana de Mood é um teste não paramétrico usado para testar a igualdade de medianas de duas ou mais populações. Veja aqui a parte R da sua pergunta. Veja também uma pergunta relacionada aqui . Também daqui :
Editar: Para três grupos, você pode considerar essa generalização simples do código R ao qual vinculei:
fonte
mood.medtest
no pacote RVAideMemoire parece ser o teste usual, exceto que ele usa o teste exato de Fisher por padrão para tamanhos de amostra menores. Amedian_test
função no pacote de moedas pode fornecer um teste assintótico ou usar Monte Carlo.Sei que é tarde demais, mas também não consegui encontrar um bom pacote para o teste mediano de Mood, então resolvi fazer uma função em R que parece fazer o truque.
Para a pergunta do OP, você primeiro executaria isso para criar um novo quadro de dados para armazenar os valores dos seus três vetores de grupo com uma variável "group" correspondente.
e execute a função para o teste mediano de Mood com
moods.median(df$value, df$group)
fonte