¿Qué pregunta estás tratando de responder?
Si desea una prueba general de lo que está sucediendo, lo nulo es que tanto los efectos principales como la interacción son todos 0, entonces puede reemplazar todos los puntos de datos con sus rangos y simplemente hacer un ANOVA regular para compararlo con una intercepción / gran media Solo modelo. Esto es básicamente cómo funcionan muchas de las pruebas no paramétricas, el uso de los rangos transforma los datos a una distribución uniforme (debajo del valor nulo) y se obtiene una buena aproximación al tratarlo como normal (el Teorema del límite central se aplica al uniforme para la muestra tamaños superiores a aproximadamente 5 o 6).
Para otras preguntas, puede usar pruebas de permutación. Si desea probar uno de los efectos principales y la interacción juntos (pero permite que el otro efecto principal sea distinto de cero), puede permutar el predictor que se está probando. Si desea probar la interacción al tiempo que permite que ambos efectos principales sean distintos de cero, puede ajustar el modelo reducido de efectos principales únicamente y calcular los valores ajustados y los residuos, luego permutar aleatoriamente los residuos y agregar los residuos permutados de nuevo al ajusta valores y ajusta el modelo anova completo, incluida la interacción. Repita esto varias veces para obtener la distribución nula para el tamaño del efecto de interacción para comparar con el tamaño del efecto de interacción de los datos originales.
Puede haber un código SAS existente para hacer cosas como esta, he visto algunos tutoriales básicos sobre el uso de SAS para pruebas de arranque y permutación (la forma más rápida parece ser usar el paso de datos para crear todos los conjuntos de datos en una tabla grande, luego usar procesamiento para hacer los análisis). Personalmente uso R para este tipo de cosas, así que no puedo ser de más ayuda para usar SAS.
Editar
Aquí hay un ejemplo usando el 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