3 faktorielle ANOVA Daten nicht normal

Hallo liebe Statistikexperten und Hilfsbereite,

seit ein paar Tagen suche ich nach einer Lösung meines Statstikproblems und komme ohne Hilfe nicht weiter.

Es geht um folgendes Problem:
Ich habe ein Datenset, dass unter dem Einfluss dreier Treatments erfasst wurde.
Es wurden Pflanzen mit 1. viel oder wenig Wasser, 2. viel oder wenig Stickstoff und 3. viel oder wenig CO2 versorgt. Auf dieser Basis wurden verschiedene Zahlenwerte erhoben, z.B. Gewicht, Zuckergehalt etc.

Zur statistischen Analyse möchte ich eine 3 faktorielle ANOVA mit anschließendem post-hoc Test (Holm-Sidak oder Tukey) durchführen (Ich arbeite mit SigmaStat11).
Leider sind aber meine Datensets nicht normalverteilt. Das Ergebnis das ich erhalte scheint mir aber durchaus plausibel zu sein.
Ich habe zwar bereits gelesen, dass ANOVA recht unanfälig gegenüber nicht normalverteilte Datensets ist, allerdings ist n=3, also sehr gering.
Ich habe versucht die Daten zu transformieren (ln oder log10), aber nur in einigen Fällen ist danach Normalverteilung gegeben.

Ich habe auch gelesen, dass sich in solch einem Fall auch eine ANOVA on ranks (Kruskal-Wallis Methode) anbietet, allerdings bekomme ich hier keine Informationen über den Einfluss der jeweiligen Treatments oder deren Interaktion.

Ist es vllt doch erlaubt unter diesen Umständen eine 3 faktorielle ANOVA durchzuführen oder muss ich auf ein anderes Verfahren umsteigen?
Kennt ihr vielleicht gute Zitate, durch die ich mein Vorgehen legitimieren kann?

Ich hoffe ihr wisst einen Rat.
Vielen Dank schonmal im Vorraus,

Viele Grüße
Jo

Hallo,

Leider sind aber meine Datensets nicht normalverteilt. Das
Ergebnis das ich erhalte scheint mir aber durchaus plausibel
zu sein.
Ich habe zwar bereits gelesen, dass ANOVA recht unanfälig
gegenüber nicht normalverteilte Datensets ist, allerdings ist
n=3, also sehr gering.

wie möchtest Du denn bei n=3 wissen, ob die Fehlerverteilungen normal sind oder nicht? Bei einer so geringen Stichprobengröße können sich selbst aus normalen Fehlerverteilungen die kuriosesten Stichprobenverteilungen ergeben.

Ob man überhaupt bei n = 3 (N=24?) rechnen sollte, scheint mir in Deinem Fall das grundlegendere Problem.

Beste Grüße

Oliver

Hallo,

wie möchtest Du denn bei n=3 wissen, ob die Fehlerverteilungen
normal sind oder nicht?

Vielleicht ist es aus anderen Experimenten bekannt oder aus theoretischen Überlegungen.

Selbst, wenn man sich die Daten anschaut, ist ja eigentlich nicht der Springende Punkt, bei jeder Gruppe zu zeigen, dass die Daten normal sind, sondern dass die residuen im Gesamtmodell normal sind. Dafür ist N=24, und damit kann man im QQ-Plot schon halbwegs(!) abschätzen, ob man systematische Abweichungen hat.

Aber du hast Recht: Insgesamt ist die Datenlage sehr spärlich.

An Jo: Ich finde, in http://en.wikipedia.org/wiki/ANOVA_on_ranks steht es ganz gut. Mit Interaktionen wirst du generell ein Problem haben. Noch ein Tipp: Stelle den deskriptiven Charakter der Studie heraus. Erwähne klar, was du über die Verteilung weißt bzw. nicht weißt und was das für die Interpretation bedeutet. Beschreibe die Ergebnisse (im Hinblick auf das zugrundeliegende Fehlermodell, was - wie du ja angemerkt hast - u.U. auch falsch sein kann).

VG
Jochen

Hallo,

wie möchtest Du denn bei n=3 wissen, ob die Fehlerverteilungen
normal sind oder nicht?

Vielleicht ist es aus anderen Experimenten bekannt oder aus
theoretischen Überlegungen.

das könnte sein. Aber dann müßte auch bekannt sein, ob diese Abweichungen ein großes Problem sind oder nicht.

Selbst, wenn man sich die Daten anschaut, ist ja eigentlich
nicht der Springende Punkt, bei jeder Gruppe zu zeigen, dass
die Daten normal sind, sondern dass die residuen im
Gesamtmodell normal sind.

Doch, die Voraussetzung ist, daß die Fehlerverteilung in jeder Gruppe normal ist mit Erwartungswert Null und gleicher Varianz:

http://de.wikipedia.org/wiki/Varianzanalyse#Zweifakt…

„Residuen“ ist übrigens nur ein anderer Begriff für „Fehler“.

Beste Grüße

Oliver

Hi Oliver,

Doch, die Voraussetzung ist, daß die Fehlerverteilung in jeder
Gruppe normal ist mit Erwartungswert Null und gleicher
Varianz:

Das stimmt zwar, aber ein QQ-Plot der Gruppen muss da nicht zielfürend sein, da die wenigsten
daraus ersehen können, ob nun gleiche Varianz vorliegt oder nicht.

Es geht ja um drei Vorausetzungen dabei: Normalität, gleiche Vars und Mean=0.
Letzteres ist eigentlich trivial, denn wenn das nicht gegeben ist, ist die ganze Schätzung völlig im A***.
Normalität kann man im QQ-Plot erkennen, allerdings ist das bei kleinen Fallzahlen schwer, weil kleine abweichungen schon immens aussehen.
Für einen Vergleich der Vars zwischen den Gruppen ist das so eine Sache, der Vergleich der y-Achsen ist hier zwar hilfreich, aber
ein Levene-test schon viel aufschlußreicher.

Zudem: WENN die Voraussetzung zutrifft, dann ergibt sich ein schöne Anpassung auch über alle Daten (normalität), und wenn man sich den Plot so anzeigen lässt, dass man die Gruppen erkennen kann, dann sollten sich keine Cluster ergeben. Wenn das doch der Fall ist, zeigt das einen möglichen Unterschied in den Streuungen an.

Bekanntermassen kann man nicht testen, dass eine Normalverteilung und gleiche Varianzen vorliegen, daher ist ein Residualplot über alle Daten in dem man Abweichungen sowohl von der einen als auch vn der anderen Voraussetzung erkennen kann, durchaus sinnvoll.

Einen Levene-test sollte man aber trotzdem mal mitlaufen lassen.

Viele Grüße,
JPL

Example-Code:

# program for visualizing assumptions of ANOVA

rm(list=ls(all=TRUE)) 

library(lawstat)

n=12 # obervations per group
means=c(0,0,0) # mean vector for groups
sds=c(1,1,1) # standard errors of error in groups
set.seed(3)

prod=function(n, means, sds, i)
{ # groups:
 g=c(rep(1,n), rep(2,n), rep(3,n)) 
 # group means:
 y\_=c(rep(means[1],n), rep(means[2],n), rep(means[3],n))
 # errors in groups: 
 e=c(rnorm(mean=0, sd=sds[1], n=n), 
 rnorm(mean=0, sd=sds[2], n=n), 
 rnorm(mean=0, sd=sds[3], n=n)) 
 # dependent variable:
 y=y\_+e 
 # analysis: 
 m=lm(y~g); print(summary(m))
 res=residuals(m)
 plot(y~g)

 postscript(paste("F",i,".ps"))
 qqnorm(y=res, pch=g); qqline(y=res)
 legend("bottomright", bty="n", 
 legend=c("Group 1", "Group 2", "Group 3"), pch=c(1,2,3)) 
 dev.off()

 postscript(paste("F",i,"g1.ps"))
 qqnorm(y=res[1:n], pch=1); qqline(y=res[1:n])
 legend("bottomright", bty="n", legend=c("Group 1"), pch=c(2)) 
 dev.off()

 postscript(paste("F",i,"g2.ps"))
 qqnorm(y=res[(n+1):frowning:2\*n)], pch=2); qqline(y=res[(n+1):frowning:2\*n)])
 legend("bottomright", bty="n", legend=c("Group 2"), pch=c(2)) 
 dev.off()

 postscript(paste("F",i,"g3.ps"))
 qqnorm(y=res[(2\*n+1):frowning:3\*n)], pch=3); qqline(y=res[(2\*n+1):frowning:3\*n)])
 legend("bottomright", bty="n", legend=c("Group 3"), pch=c(3)) 
 dev.off()

 print(levene.test(y=res, group=g))
}

prod(n=n, means=c(0,0,0), sds=c(1,1,1), i=1) # no clusters

prod(n=n, means=c(0,0,0), sds=c(1,2,4), i=2) # clusters

prod(n=n, means=c(1,3,6), sds=c(2,2,2), i=3) # no clusters