Welche Frage versuchst du zu beantworten?
Wenn Sie einen Gesamttest für alles wünschen, was vor sich geht. Die Null ist, dass sowohl die Haupteffekte als auch die Interaktion alle 0 sind. Dann können Sie alle Datenpunkte durch ihre Ränge ersetzen und einfach eine reguläre ANOVA durchführen, um sie mit einem Intercept / Grand Mean zu vergleichen einziges Modell. Dies ist im Grunde, wie viele der nichtparametrischen Tests funktionieren. Wenn Sie die Ränge verwenden, werden die Daten in eine gleichmäßige Verteilung (unter der Null) umgewandelt, und Sie erhalten eine gute Annäherung, indem Sie sie als normal behandeln (der zentrale Grenzwertsatz gilt für die Uniform für die Stichprobe Größen über etwa 5 oder 6).
Für andere Fragen können Sie Permutationstests verwenden. Wenn Sie einen der Haupteffekte und die Interaktion zusammen testen möchten (aber zulassen, dass der andere Haupteffekt ungleich Null ist), können Sie den zu testenden Prädiktor permutieren. Wenn Sie die Interaktion testen möchten, während beide Haupteffekte ungleich Null sind, können Sie nur das reduzierte Modell der Haupteffekte anpassen und die angepassten Werte und Residuen berechnen, dann die Residuen zufällig permutieren und die permutierten Residuen wieder zu addieren Werte angepasst und das vollständige Anova-Modell einschließlich der Interaktion angepasst. Wiederholen Sie dies einige Male, um die Nullverteilung für die Größe des Interaktionseffekts zu erhalten, die mit der Größe des Interaktionseffekts aus den Originaldaten verglichen werden kann.
Möglicherweise gibt es dafür SAS-Code. Ich habe einige grundlegende Tutorials zur Verwendung von SAS für Bootstrap- und Permutationstests gesehen (der schnellste Weg scheint darin zu bestehen, den Datenschritt zu verwenden, um alle Datensätze in einer großen Tabelle zu erstellen und dann by zu verwenden Verarbeitung zur Durchführung der Analysen). Persönlich verwende ich R für diese Art von Dingen, kann also bei der Verwendung von SAS nicht hilfreicher sein.
Bearbeiten
Hier ist ein Beispiel mit R-Code:
> 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