Estou trabalhando na minha tese de mestrado no momento e planejei executar as estatísticas com o SigmaPlot. No entanto, depois de passar algum tempo com meus dados, cheguei à conclusão de que o SigmaPlot pode não ser adequado para o meu problema (posso estar enganado) e iniciei minhas primeiras tentativas no R, o que não facilitou exatamente.
O plano era executar uma simples ANOVA DE DUAS VIAS nos meus dados, o que resulta de 3 proteínas diferentes e 8 tratamentos diferentes naquelas, então meus dois fatores são proteínas e tratamentos. Eu testei a normalidade usando ambos
> shapiro.test(time)
e
> ks.test(time, "norm", mean=mean(time), sd=sqrt(var(time)))
Nos dois casos (talvez não seja surpreendente), acabei com uma distribuição não normal.
O que me deixou com as primeiras perguntas de qual teste usar para igualdade de variâncias. eu vim com
> chisq.test(time)
e o resultado foi que também não tenho igualdade de variação nos meus dados.
Tentei diferentes transformações de dados (log, centro, padronização), as quais não resolveram meus problemas com as variações.
Agora estou sem saber como conduzir a ANOVA para testar quais proteínas e quais tratamentos diferem significativamente um do outro. Encontrei algo sobre um teste de Kruskal-Walis, mas apenas por um fator (?). Também descobri coisas sobre classificação ou randamização, mas ainda não como implementar essas técnicas em R.
Alguém tem uma sugestão do que devo fazer?
Edit: obrigado por suas respostas, estou um pouco impressionado com a leitura (parece que está ficando cada vez mais em vez de menos), mas é claro que continuarei.
Aqui está um exemplo dos meus dados, conforme sugerido (lamento muito pelo formato, não consegui descobrir outra solução ou local para colocar um arquivo. Ainda sou novo em tudo isso.):
protein treatment time
A con 2329.0
A HY 1072.0
A CL1 4435.0
A CL2 2971.0
A CL1-HY sim 823.5
A CL2-HY sim 491.5
A CL1+HY mix 2510.5
A CL2+HY mix 2484.5
A con 2454.0
A HY 1180.5
A CL1 3249.7
A CL2 2106.7
A CL1-HY sim 993.0
A CL2-HY sim 817.5
A CL1+HY mix 1981.0
A CL2+HY mix 2687.5
B con 1482.0
B HY 2084.7
B CL1 1498.0
B CL2 1258.5
B CL1-HY sim 1795.7
B CL2-HY sim 1804.5
B CL1+HY mix 1633.0
B CL2+HY mix 1416.3
B con 1339.0
B HY 2119.0
B CL1 1093.3
B CL2 1026.5
B CL1-HY sim 2315.5
B CL2-HY sim 2048.5
B CL1+HY mix 1465.0
B CL2+HY mix 2334.5
C con 1614.8
C HY 1525.5
C CL1 426.3
C CL2 1192.0
C CL1-HY sim 1546.0
C CL2-HY sim 874.5
C CL1+HY mix 1386.0
C CL2+HY mix 364.5
C con 1907.5
C HY 1152.5
C CL1 639.7
C CL2 1306.5
C CL1-HY sim 1515.0
C CL2-HY sim 1251.0
C CL1+HY mix 1350.5
C CL2+HY mix 1230.5
fonte
?bartlett.test
)Respostas:
Isso pode ser mais um comentário do que uma resposta, mas não se encaixa como um comentário. Podemos ajudá-lo aqui, mas isso pode levar algumas iterações; precisamos de mais informações.
Primeiro, qual é a sua variável de resposta?
Segundo, observe que a distribuição marginal de sua resposta não precisa ser normal, mas sim a distribuição condicional no modelo (isto é, os resíduos) - não está claro que você examinou seus resíduos. Além disso, normalidade é a suposição menos importante de um modelo linear (por exemplo, uma ANOVA); os resíduos podem não precisar ser perfeitamente normais. Testes de normalidade geralmente não valem a pena (veja aqui uma discussão sobre CV), os gráficos são muito melhores. Eu tentaria um qq-plot de seus resíduos. Em
R
isso é feito comqqnorm()
, ou tenteqqPlot()
nacar
pacote. Também vale a pena considerar a maneira pela qual os resíduos não são normais: a assimetria é mais prejudicial do que a curtose excessiva, principalmente se as inclinações alternam as direções entre os grupos.Se realmente há um problema que vale a pena se preocupar, uma transformação é uma boa estratégia. Tomar o log de seus dados brutos é uma opção, mas não a única. Observe que centralizar e padronizar não são realmente transformações nesse sentido. Você quer olhar para a família Box & Cox de transformações de poder . E lembre-se, o resultado não precisa ser perfeitamente normal, apenas o suficiente.
Em seguida, não sigo o uso do teste do qui-quadrado para homogeneidade de variância, embora possa estar perfeitamente correto. Eu sugiro que você use o teste de Levene (use
leveneTest()
incar
). A heterogeneidade é mais prejudicial que a não normalidade, mas a ANOVA é bastante robusta se a heterogeneidade for menor. Uma regra prática padrão é que a maior variação de grupo pode ser até quatro vezes a menor sem apresentar problemas graves. Uma boa transformação também deve abordar a heterogeneidade.Se essas estratégias forem insuficientes, eu provavelmente exploraria uma regressão robusta antes de tentar uma abordagem não paramétrica.
Se você puder editar sua pergunta e falar mais sobre seus dados, talvez seja possível atualizá-la para fornecer informações mais específicas.
fonte
( observação: esta resposta foi postada antes da pergunta ser migrada e mesclada do SO, portanto, foram adicionados detalhes à pergunta que não são abordados aqui. Muitos são abordados nos comentários e na resposta por @gung).
Existem muitas abordagens diferentes, e essa questão foi abordada em outras partes deste site. Aqui está uma lista de algumas abordagens, com links para outras perguntas no site e algumas referências:
adonis
função no pacote R Veganfonte
adonis
noVegan
pacote R / David 16 de maio às 16:20adonis
parece funcionar mesmo com dvs. univariados No entanto, sinto que ele usa algo como somas de quadrados do tipo 1 à medida que recebo a mensagemTerms added sequentially (first to last)
sempre que a executa. Você já usou ou pode dizer algo sobre isso? - Henrik 16 de maio às 17:03