Não paramétrico para ANOVA bidirecional (3x3)


8

Minha variável dependente é contínua, não normal (inclinada para a esquerda de acordo com o teste Shapiro-Wilk). Eu tenho duas variáveis ​​independentes (grupo de tratamento por cor, tipo de alimento). Existem 3 níveis dentro de cada variável independente. O número de observações para cada variável independente não é igual.

Procurei testes não paramétricos, como o teste de Friedman e o teste de Scheirer-Ray-Hare, nenhum dos quais parece adequado (devido ao número desigual de observações).

Existem testes alternativos que alguém poderia sugerir? Eu estou usando SAS.

Respostas:


8

Que pergunta você está tentando responder?

Se você deseja um teste geral de tudo o que está acontecendo, o nulo é que ambos os efeitos principais e a interação são todos 0, então você pode substituir todos os pontos de dados por suas classificações e fazer uma ANOVA regular para comparar com uma média de interceptação / média único modelo. Isso é basicamente quantos dos testes não paramétricos funcionam, usando as fileiras transforma os dados em uma distribuição uniforme (sob nulo) e você obtém uma boa aproximação tratando-os como normais (o Teorema do Limite Central aplica-se ao uniforme para a amostra) tamanhos acima de 5 ou 6).

Para outras perguntas, você pode usar testes de permutação. Se você quiser testar um dos efeitos principais e a interação juntos (mas permitir que o outro efeito principal seja diferente de zero), poderá permutar o preditor que está sendo testado. Se você deseja testar a interação enquanto permite que ambos os efeitos principais sejam diferentes de zero, você pode ajustar apenas o modelo reduzido de efeitos principais e calcular os valores e resíduos ajustados, permutar aleatoriamente os resíduos e adicionar os resíduos permutados de volta ao valores ajustados e se encaixam no modelo anova completo, incluindo a interação. Repita isso várias vezes para obter a distribuição nula do tamanho do efeito de interação e comparar com o tamanho do efeito de interação dos dados originais.

Pode haver código SAS existente para fazer coisas como esta, vi alguns tutoriais básicos sobre o uso do SAS para testes de inicialização e permutação (a maneira mais rápida parece estar usando a etapa de dados para criar todos os conjuntos de dados em uma grande tabela e depois usando por processamento para fazer as análises). Pessoalmente, eu uso R para esse tipo de coisa, então não posso ajudar mais no uso do SAS.


Editar

Aqui está um exemplo usando o código R:

> fit1 <- aov(breaks ~ wool*tension, data=warpbreaks)
> summary(fit1)
             Df Sum Sq Mean Sq F value   Pr(>F)    
wool          1    451   450.7   3.765 0.058213 .  
tension       2   2034  1017.1   8.498 0.000693 ***
wool:tension  2   1003   501.4   4.189 0.021044 *  
Residuals    48   5745   119.7                     
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
> 
> fit2 <- aov(breaks ~ wool + tension, data=warpbreaks)
> 
> tmpfun <- function() {
+   new.df <- data.frame(breaks = fitted(fit2) + sample(resid(fit2)),
+                        wool = warpbreaks$wool,
+                        tension = warpbreaks$tension)
+   fitnew <- aov(breaks ~ wool*tension, data=new.df)
+   fitnew2 <- update(fitnew, .~ wool + tension)
+   c(coef(fitnew), F=anova(fitnew2,fitnew)[2,5])
+ }
> 
> out <- replicate(10000, tmpfun())
> 
> # based on only the interaction coefficients
> mean(out[5,] >= coef(fit1)[5])
[1] 0.002
> mean(out[6,] >= coef(fit1)[6])
[1] 0.0796
> 
> # based on F statistic from full-reduced model
> mean(out[7,] >= anova(fit2,fit1)[2,5])
[1] 0.022

1
+1. O polimento médio de Tukey funciona bem para ajustar o modelo quando é tudo o que é necessário. Seria interessante (mas talvez um pouco intensivo em termos de computação) combinar isso com um teste de permutação.
whuber

Obrigado pelas respostas. Este é mais um estudo exploratório - apenas para examinar se há diferenças na variável dependente com base nas duas variáveis ​​independentes.
mbee

@ GregSnow, qual pacote você usa no R para isso? Eu estou usando a ezPermfunção de ezporque me permite fazer dv ~ iv1 * iv2 | subj. Isso me dá valor p, mas o autor desaconselha sua interpretação (eu sei que você está explicando como executar manualmente isso, mas, embora eu tenha uma forte formação em programação, meu conhecimento dos termos de estatísticas está começando a melhorar)
toto_tico

1
@toto_tico, não uso nenhum pacote adicional. Testes de permutação são fáceis o suficiente para fazer apenas com o código R regular. Eu incluí um exemplo acima usando um conjunto de dados interno.
Greg Snow

@GregSnow, por que você faz uma amostra na amostra de resíduos (resid (fit2))? Eu pensei que a amostragem fosse realizada no dv (warpbreaks $ breakl). Minha intuição me diz que o que eu li nos testes de permutação foi para um fator, e as coisas ficam mais complicadas para vários fatores.
Toto_tico

3

+1 para @Greg Snow. De acordo com sua estratégia de uso não paramétrico, você pode usar a regressão logística ordinal . Isso permitirá que você ajuste um modelo com vários fatores e interações entre eles. A documentação relevante do SAS está aqui . Há um tutorial sobre como fazer isso no SAS no excelente site de ajuda sobre estatísticas da UCLA aqui e outro tutorial da Universidade de Indiana aqui .


Essa abordagem não está respondendo a uma pergunta diferente? No cenário ANOVA, a variável contínua é o resultado e estamos testando a soma dos quadrados entre / entre os fatores. Em uma regressão logística ordinal, você está tentando prever a associação de fatores de acordo com os valores dessa variável contínua. Embora certamente existam situações em que isso lhe dará inferência semelhante, não está claro para mim que esses procedimentos sejam equivalentes em GERAL. Da mesma maneira que a regressão de Y = BX nem sempre será igual a X = BY.
Ryan Simmons

Essencialmente, acho que as perguntas "Esses grupos são diferentes de acordo com X?" e "Como o X pode ser usado para classificar indivíduos entre esses grupos?" será o mesmo em circunstâncias muito específicas e você não pode necessariamente substituir a ANOVA por regressão logística e obter resultados comparáveis.
Ryan Simmons

@RyanSimmons, você não precisa necessariamente classificar nada. O teste do modelo OLR é um teste se alguns grupos estiverem associados a valores Y tipicamente maiores que outros grupos. Você está simplesmente usando apenas o componente ordinal dos valores Y. Testes como Kruskal-Wallis, Mann-Whitney, etc. são casos especiais de OLR.
gung - Restabelece Monica

@gung, e a parte interna do problema? É possível com uma regressão logística ordinal?
Toto_tico

1
@toto_tico, acabei de responder no outro tópico. Você precisa usar clmm()no pacote ordinal.
gung - Restabelece Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.