Ich arbeite gerade an meiner Masterarbeit und habe vor, die Statistik mit SigmaPlot zu erstellen. Nachdem ich einige Zeit mit meinen Daten verbracht hatte, kam ich jedoch zu dem Schluss, dass SigmaPlot möglicherweise nicht für mein Problem geeignet ist (ich könnte mich irren), und startete meine ersten Versuche in R, was es nicht gerade einfacher machte.
Der Plan war, eine einfache ZWEI-WEG-ANOVA mit meinen Daten durchzuführen, die aus drei verschiedenen Proteinen und acht verschiedenen Behandlungen resultiert. Meine beiden Faktoren sind also Proteine und Behandlungen. Ich habe beides auf Normalität getestet
> shapiro.test(time)
und
> ks.test(time, "norm", mean=mean(time), sd=sqrt(var(time)))
In beiden Fällen (vielleicht nicht überraschend) hatte ich eine nicht normale Verteilung.
Was mich bei den ersten Fragen ließ, welchen Test ich für die Varianzgleichheit verwenden sollte. Ich hatte die Idee dass
> chisq.test(time)
und das Ergebnis war, dass ich auch in meinen Daten keine Varianzgleichheit habe.
Ich habe verschiedene Datentransformationen (Log, Center, Standardisierung) ausprobiert, die meine Probleme mit den Varianzen nicht gelöst haben.
Jetzt bin ich ratlos, wie man die ANOVA durchführt, um zu testen, welche Proteine und welche Behandlungen sich signifikant voneinander unterscheiden. Ich habe etwas über einen Kruskal-Walis-Test gefunden, aber nur für einen Faktor (?). Ich habe auch Dinge über Ranking oder Randamisierung gefunden, aber noch nicht, wie man diese Techniken in R umsetzt.
Hat jemand einen Vorschlag was ich tun soll?
Edit: danke für deine antworten, ich bin ein wenig überwältigt von der lektüre (es scheint nur immer mehr statt weniger zu werden), aber ich werde natürlich weitermachen.
Hier ein Beispiel meiner Daten, wie vorgeschlagen (das Format tut mir sehr leid, ich konnte keine andere Lösung oder Stelle zum Ablegen einer Datei finden. Ich bin immer noch neu in diesem Bereich.):
protein treatment time
A con 2329.0
A HY 1072.0
A CL1 4435.0
A CL2 2971.0
A CL1-HY sim 823.5
A CL2-HY sim 491.5
A CL1+HY mix 2510.5
A CL2+HY mix 2484.5
A con 2454.0
A HY 1180.5
A CL1 3249.7
A CL2 2106.7
A CL1-HY sim 993.0
A CL2-HY sim 817.5
A CL1+HY mix 1981.0
A CL2+HY mix 2687.5
B con 1482.0
B HY 2084.7
B CL1 1498.0
B CL2 1258.5
B CL1-HY sim 1795.7
B CL2-HY sim 1804.5
B CL1+HY mix 1633.0
B CL2+HY mix 1416.3
B con 1339.0
B HY 2119.0
B CL1 1093.3
B CL2 1026.5
B CL1-HY sim 2315.5
B CL2-HY sim 2048.5
B CL1+HY mix 1465.0
B CL2+HY mix 2334.5
C con 1614.8
C HY 1525.5
C CL1 426.3
C CL2 1192.0
C CL1-HY sim 1546.0
C CL2-HY sim 874.5
C CL1+HY mix 1386.0
C CL2+HY mix 364.5
C con 1907.5
C HY 1152.5
C CL1 639.7
C CL2 1306.5
C CL1-HY sim 1515.0
C CL2-HY sim 1251.0
C CL1+HY mix 1350.5
C CL2+HY mix 1230.5
quelle
?bartlett.test
)Antworten:
Dies mag eher ein Kommentar als eine Antwort sein, passt aber nicht als Kommentar. Möglicherweise können wir Ihnen hier weiterhelfen, dies kann jedoch einige Iterationen dauern. Wir brauchen mehr Informationen.
Was ist Ihre Antwortvariable?
Beachten Sie zweitens, dass die marginale Verteilung Ihrer Antwort nicht normal sein muss, sondern die vom Modell abhängige Verteilung (dh die Residuen) - es ist nicht klar, dass Sie Ihre Residuen untersucht haben. Darüber hinaus ist Normalität die am wenigsten wichtige Annahme eines linearen Modells (z. B. einer ANOVA); Die Reste müssen möglicherweise nicht ganz normal sein. Normalitätstests lohnen sich in der Regel nicht (siehe hier für eine Diskussion zum Lebenslauf), Grundstücke sind viel besser. Ich würde einen QQ-Plot Ihrer Residuen versuchen . In
R
dieser erfolgt mitqqnorm()
oder versuchen ,qqPlot()
in dercar
Paket. Es lohnt sich auch, die Art und Weise zu berücksichtigen, in der die Reste nicht normal sind: Die Schiefe ist schädlicher als die überschüssige Kurtosis, insbesondere wenn die Schiefstellungen zwischen den Gruppen die Richtungen wechseln.Wenn es wirklich ein Problem gibt, über das es sich zu sorgen lohnt, ist eine Transformation eine gute Strategie. Das Protokollieren Ihrer Rohdaten ist eine Option, aber nicht die einzige. Beachten Sie, dass Zentrieren und Standardisieren keine wirklichen Transformationen in diesem Sinne sind. Sie möchten einen Blick in die Leistungsumwandlungsfamilie von Box & Cox werfen . Und denken Sie daran, das Ergebnis muss nicht ganz normal sein, nur gut genug.
Als nächstes folge ich Ihrer Verwendung des Chi-Quadrat-Tests für die Homogenität der Varianz nicht, obwohl dies vollkommen in Ordnung sein kann. Ich würde vorschlagen, dass Sie Levene's Test verwenden (verwenden
leveneTest()
incar
). Heterogenität ist schädlicher als Nicht-Normalität, aber die ANOVA ist ziemlich robust, wenn die Heterogenität gering ist. Als Faustregel gilt, dass die größte Gruppenvarianz bis zu viermal so groß sein kann wie die kleinste, ohne dass starke Probleme auftreten. Eine gute Transformation sollte sich auch mit Heterogenität befassen.Wenn diese Strategien nicht ausreichen, würde ich wahrscheinlich eine robuste Regression untersuchen, bevor ich einen nicht parametrischen Ansatz versuche.
Wenn Sie Ihre Frage bearbeiten und mehr über Ihre Daten sagen können, kann ich diese möglicherweise aktualisieren, um spezifischere Informationen bereitzustellen.
quelle
( Hinweis: Diese Antwort wurde gepostet, bevor die Frage migriert und aus SO zusammengeführt wurde. Daher wurden Details zu der Frage hinzugefügt, die hier nicht behandelt werden. Viele werden in den Kommentaren und der Antwort von @gung behandelt.)
Es gibt viele verschiedene Ansätze, und diese Frage wurde an anderer Stelle auf dieser Website behandelt. Hier ist eine Liste einiger Ansätze mit Links zu anderen Fragen auf der Website und einigen Referenzen:
adonis
Funktion im R Vegan-Paketquelle
adonis
imVegan
R-Paket / David am 16. Mai um 16:20adonis
scheint auch mit univariaten dvs zu funktionieren. Ich habe jedoch das Gefühl, dass es so etwas wie Quadratsummen vom Typ 1 verwendet,Terms added sequentially (first to last)
wenn ich die Nachricht beim Ausführen erhalte . Hast du es benutzt oder kannst du etwas dazu sagen? - Henrik 16. Mai um 17:03