Wie führe ich eine bidirektionale ANOVA für Daten durch, bei denen weder Normalität noch Varianzgleichheit in R vorliegen?


16

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

2
Es sieht so aus, als ob Sie mit R auf einem guten Weg sind, aber ich glaube, Ihre Schwierigkeiten hängen möglicherweise überhaupt nicht mit R zusammen. Vielleicht müssen Sie zuerst einen Statistiker konsultieren, um das Problem in den Griff zu bekommen. Erst dann würden Sie dies praktisch angehen. Ihre derzeitige Frage ist ziemlich ausführlich und kann die Leute davon abhalten, etwas dagegen zu unternehmen. Für den technischen Teil sind hier einige Websites aufgeführt: ats.ucla.edu/stat/R/seminars/Repeated_Measures/… und personality-project.org/R/r.anova.html
Roman Luštrik

4
Eine sehr gute Alternative zu Einstufungstests ist die Verwendung von Permutations- ANOVAs ( uvm.edu/~dhowell/StatPages/More_Stuff/Permutation%20Anova/… ). Bei diesem Ansatz spielt die Heteroskedastizität keine Rolle. Der Hauptgrund für die Verwendung von Rang-Tests liegt darin, dass sie viel einfacher zu berechnen sind. Das spielt keine Rolle mehr. Wir haben R und effiziente Computer ...
Mikko

1
Was ist eine Antwort? Beachten Sie, dass es uns eigentlich egal ist, ob die Antwort normal verteilt ist - wir möchten überprüfen, ob die Residuen aus der Analyse mit ähnlichen Varianzen ungefähr normal sind. Aber wenn es tatsächlich einen Behandlungseffekt gibt, würden wir nicht erwarten, dass das Ansprechen normalerweise geringfügig verteilt ist.
Dason

1
Ich stelle fest, dass ich gerade die von Ihnen geposteten Daten erfasst und die Zwei-Wege-Anova ausgeführt habe und einen Shapiro-Wilks-Test für die Residuen durchgeführt habe. Dies ergab einen p-Wert von 0,5022, was nicht allzu bedenklich ist.
Dason

1
@ Sabine-Normalität ist für ANOVA oft kein großes Problem, aber Ihre Stichproben sollten aus derselben Grundgesamtheit stammen, was bedeutet, dass die Varianzgleichheit die wichtigste Annahme ist, natürlich nach der Randomisierung. Sie sollten etwas tun, wenn Ihre Abweichungen nicht ungefähr gleich sind (versuchen Sie es ?bartlett.test)
Mikko

Antworten:


12

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 Rdieser erfolgt mit qqnorm()oder versuchen , qqPlot()in dercarPaket. 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()in car). 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.


Zu meinem zweiten Punkt habe ich kürzlich hier eine Antwort geschrieben , die dazu beitragen kann, dieses Problem klarer zu machen. Vielleicht möchten Sie es lesen.
gung - Wiedereinsetzung von Monica

8

( 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:

  1. Die Box-Cox-Potenztransformation kann Residuen auf einer nichtlinearen Skala normalisieren
  2. Eine ANOVA für Rangdaten ist sehr einfach, hat jedoch eine verringerte Leistung und ist schwer zu interpretieren. Siehe Conover und Iman, (1981)
  3. Ordinales logistisches Modell für Proportional Odds
  4. Permutationstests ( Anderson und ter Braak 2003 ), implementiert und beschrieben von Anderson und als adonisFunktion im R Vegan-Paket
  5. Bootstrapping
  6. Hierarchische Bayes'sche Modellierung ( Gelman 2005 )

+1, dies ist eine schöne Liste einiger verfügbarer Optionen zum Erkunden.
gung - Reinstate Monica

Nachstehend sind Kommentare aufgeführt, die ursprünglich zum Stapelüberlauf ausgetauscht wurden und bei der Migration verloren gegangen sind. Siehe meta.stats.stackexchange.com/q/1157/930 .
chl

Wissen Sie, ob es eine Umsetzung der Ideen von Anderson und Braak gibt? - Henrik 16. Mai um 15:15
chl

@ Henrik Es gibt eine Implementierung in FORTRAN Anderson 2005, die über die R-Funktion adonisim VeganR-Paket / David am 16. Mai um 16:20
chl

Vielen Dank. adonisscheint 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
chl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.