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?
Wie teste ich richtig auf Normalverteilung?
Re: Wie teste ich richtig auf Normalverteilung?
welchen Test ich danach brauche, um alle 5 Treatments gleichzeitig miteinander zu vergleichen
Der Test auf Normalverteilung aller Daten sagt dir nicht viel, vorallem wen du ja Treatmentunterschiede erwartest.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 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.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Wie teste ich richtig auf Normalverteilung?
EDi hat Recht. Vielleicht hilft folgendes Beispiel bei der Überzeugungsarbeit:
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
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:> 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
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)
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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte