Seite 1 von 1

Wie teste ich richtig auf Normalverteilung?

Verfasst: Do Dez 07, 2017 7:58 pm
von rosarot
Hallo!

Mein Datensatz: data
Treatment x
C 836
C 999
C 1030
C 745
C 839
O 686
O 665
O 740
O 502
O 523
F 1042
F 1335
F 1588
F 1262
F 869
F2 787
F2 656
F2 717
F2 629
F2 714
T 1005
T 654
T 763
T 738
T 925
T2 470
T2 582
T2 445
T2 528
T2 607

Ich will meine Daten auf Normalverteilung testen, und zwar
1. Alle auf einmal, um rauszufinden, welchen Test ich danach brauche, um alle 5 Treatments gleichzeitig miteinander zu vergleichen
2. Jeweils nur Zeile 1-10 (C & O), 11-20 (F & F2), 21-30 (T & T2) einzeln, um rauszufinden, welchen Test ich für einen paarweisen Vergleich brauche, wenn ich NUR C mit O ODER NUR F mit F2 vergleichen will.

Habe es mit einem Shapiro Test versucht:
shapiro.test(data$x) #nicht normalverteilt für 1.
shapiro.test(data[1:10, 1]) #normalverteilt für 2.a
shapiro.test(data[11:20, 1]) #normalverteilt für 2.b
shapiro.test(data[21:30, 1]) #normalverteilt für 2.c

Das kam mir komisch vor, also wollte ich noch einen Kolmogorov-Smirnov machen, aber ich habe nicht rausgefunden, wie man es richtig in R eingibt.
Habe verschiedene Varianten probiert, die unterschiedliche Ergebnisse liefern:
für 1.:
ks.test(data$x, "rnorm") #nichtnormal
ks.test(data$x, "pnorm", mean=mean(data$x), sd=sd(data$x)) #normal

für 2. war ich komplett ratlos.

Kann mir jemand helfen, wie mein R-Skript aussehen muss?

Re: Wie teste ich richtig auf Normalverteilung?

Verfasst: Do Dez 07, 2017 11:51 pm
von EDi
welchen Test ich danach brauche, um alle 5 Treatments gleichzeitig miteinander zu vergleichen
Jeweils nur Zeile 1-10 (C & O), 11-20 (F & F2), 21-30 (T & T2) einzeln, um rauszufinden, welchen Test ich für einen paarweisen Vergleich brauche, wenn ich NUR C mit O ODER NUR F mit F2 vergleichen will.
Der Test auf Normalverteilung aller Daten sagt dir nicht viel, vorallem wen du ja Treatmentunterschiede erwartest.
Der Test der Gruppen ist auch nicht sinvoll (zig tests, jeder einzelne hat eine Fehlerwahrscheinlichkeit, da kommt was zusammen) und die Power bei n=5 dürfte auch dürftig sein.


Ich würde es gar nicht testen...
Schau dir die Residuen von deinem Model an und entscheide anhand derer, ob die Modellannahmen passen und bei Bedarf anpassen (z. b. bei varianzinhomogenität).

http://onlinelibrary.wiley.com/doi/10.1 ... x/abstract

ist ein must-read.

Re: Wie teste ich richtig auf Normalverteilung?

Verfasst: Fr Dez 08, 2017 8:22 am
von bigben
EDi hat Recht. Vielleicht hilft folgendes Beispiel bei der Überzeugungsarbeit:
> set.seed(123)
> shapiro.test(runif(10))$p.value
[1] 0.51445
> shapiro.test(runif(10))$p.value
[1] 0.3660925
> shapiro.test(runif(10))$p.value
[1] 0.5977586
> shapiro.test(runif(10))$p.value
[1] 0.4565689
Obwohl die Werte einer Gleichverteilung entnommen sind, kann der Shapiro-Test bei n = 10 keine Abweichung von der Normalität nachweisen. Tatsächlich wird hier in nur 8% der Fälle ein p-Wert unter 5% erreicht:

Code: Alles auswählen

n <- 10000   # hier größere Zahl einfügen für genaueres Ergebnis bei dann aber längerer Rechenzeit
positiv <- 0
for (i in 1:n) if(shapiro.test(runif(10))$p.value < 0.05) positiv <- positiv + 1
print(positiv/n)
Zehn Werte auf Normalverteilung zu testen macht nur Sinn, wenn man damit seine Lehrer beruhigt.

bezüglich ks.test, solltest Du mal help(ks.test) in R eingeben und ganz unten bei der Überschrift "Examples" gucken. Dann siehst Du, dass die Verteilungsfunktion mit dem "p" die richtige ist.

LG,
Bernhard