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