Ich habe Daten aus 3 Gruppen von Algenbiomasse ( , , ), die ungleiche Stichprobengrößen enthalten ( , , ) und möchte vergleichen, ob diese Gruppen aus derselben Population stammen.B C n A = 15 n B = 13 n C = 12
Einweg-ANOVA wäre auf jeden Fall der richtige Weg, doch bei der Durchführung von Normalitätstests für meine Daten scheint Heteroskedascity das Hauptproblem zu sein. Meine Rohdaten ergaben ohne Transformation ein Varianzverhältnis ( ), das sehr viel höher ist als der kritische Wert ( ), und daher kann ich keine Einweg-ANOVA durchführen .
Ich habe auch versucht, meine Daten zu normalisieren. Selbst nach Versuchen mit verschiedenen Transformationen (log, Quadratwurzel, Quadrat) betrug das niedrigste das nach der Transformation mit einer -Transformation erzeugt wurde, , was im Vergleich zu F _ {\ rm crit} immer noch höher war .
Kann mir hier jemand raten, wohin ich von hier aus gehen soll? Ich kann mir keine anderen Transformationsmethoden für die Normalisierung durch Daten vorstellen. Gibt es Alternativen zu einer Einweg-ANOVA?
PS: meine Rohdaten sind unten:
A: 0.178 0.195 0.225 0.294 0.315 0.341 0.36 0.363 0.371 0.398 0.407 0.409 0.432
0.494 0.719
B: 0.11 0.111 0.204 0.416 0.417 0.441 0.492 0.965 1.113 1.19 1.233 1.505 1.897
C: 0.106 0.114 0.143 0.435 0.448 0.51 0.576 0.588 0.608 0.64 0.658 0.788 0.958
Antworten:
Beim Umgang mit heteroskedastischen Daten stehen eine Reihe von Optionen zur Verfügung. Leider funktioniert garantiert keiner von ihnen immer. Hier sind einige Optionen, mit denen ich vertraut bin:
Update: Hier finden Sie eine Demonstration
R
einiger Möglichkeiten zur Anpassung eines linearen Modells (z. B. einer ANOVA oder einer Regression) bei Heteroskedastizität / Varianzheterogenität.Beginnen wir mit einem Blick auf Ihre Daten. Der Einfachheit halber habe ich sie in zwei Datenrahmen geladen
my.data
(die wie oben mit einer Spalte pro Gruppe strukturiert sind) undstacked.data
(die zwei Spalten haben:values
mit den Zahlen undind
mit dem Gruppenindikator).Wir können die Heteroskedastizität formell mit dem Levene-Test testen:
Sicher genug, Sie haben Heteroskedastizität. Wir werden prüfen, wie unterschiedlich die Gruppen sind. Als Faustregel gilt, dass lineare Modelle für die Heterogenität der Varianz ziemlich robust sind, solange die maximale Varianz nicht mehr als das der minimalen Varianz beträgt.4×
Ihre Varianzen unterscheiden sich erheblich, wobei die größten19×
B
die der kleinsten sind . Dies ist ein problematisches Maß an Heteroscedosaticity.A
Sie hatten überlegt, Transformationen wie den Logarithmus oder die Quadratwurzel zu verwenden, um die Varianz zu stabilisieren. In einigen Fällen funktioniert dies, aber Transformationen vom Typ Box-Cox stabilisieren die Varianz, indem sie die Daten asymmetrisch komprimieren. Entweder werden sie nach unten komprimiert, wobei die höchsten Daten am stärksten komprimiert werden, oder sie werden nach oben komprimiert, wobei die niedrigsten Daten am stärksten komprimiert werden. Sie müssen also die Varianz Ihrer Daten ändern, damit dies optimal funktioniert. Ihre Daten weisen einen großen Unterschied in der Varianz auf, aber einen relativ kleinen Unterschied zwischen Mittelwerten und Medianwerten, dh die Verteilungen überlappen sich meistens. Als Unterrichtsübung können wir einige erstellen,2.7 .7
parallel.universe.data
indem wir zu allen Werten und zu hinzufügenB
C
um zu zeigen, wie es funktionieren würde:Durch die Verwendung der Quadratwurzel-Transformation werden diese Daten recht gut stabilisiert. Sie können die Verbesserung für die parallelen Universumsdaten hier sehen:
Anstatt nur verschiedene Transformationen auszuprobieren, besteht ein systematischerer Ansatz darin, den Box-Cox-Parameter zu optimieren (obwohl es normalerweise empfohlen wird, diesen auf die nächste interpretierbare Transformation zu runden). In Ihrem Fall ist entweder die Quadratwurzel oder das Protokoll zulässig, obwohl beides nicht funktioniert. Für die parallelen Universumsdaten ist die Quadratwurzel am besten:λ λ=.5 λ=0
Da es sich bei diesem Fall um eine ANOVA handelt (dh keine stetigen Variablen), besteht eine Möglichkeit, mit Heterogenität umzugehen, darin, die Welch-Korrektur auf die Nennerfreiheitsgrade im Test anzuwenden (nb , ein Bruchwert statt ):F
df = 19.445
df = 38
Ein allgemeinerer Ansatz besteht darin, gewichtete kleinste Quadrate zu verwenden . Da sich einige Gruppen (
B
) mehr ausbreiten, liefern die Daten in diesen Gruppen weniger Informationen über den Ort des Mittelwerts als die Daten in anderen Gruppen. Wir können das Modell einbeziehen lassen, indem wir jedem Datenpunkt ein Gewicht zuweisen. Ein übliches System besteht darin, den Kehrwert der Gruppenvarianz als Gewicht zu verwenden:Dies ergibt geringfügig andere und Werte als die ungewichtete ANOVA ( , ), hat jedoch die Heterogenität gut berücksichtigt:F p
4.5089
0.01749
Weighted Least Squares ist jedoch kein Allheilmittel. Eine unangenehme Tatsache ist, dass es nur richtig ist, wenn die Gewichte richtig sind, was unter anderem bedeutet, dass sie von vornherein bekannt sind. Nicht-Normalität (z. B. Versatz) oder Ausreißer werden ebenfalls nicht behandelt. Die Verwendung von aus Ihren Daten geschätzten Gewichten funktioniert jedoch häufig, insbesondere wenn Sie über genügend Daten verfügen, um die Varianz mit angemessener Genauigkeit zu schätzen (dies entspricht der Idee, eine Tabelle anstelle einer Tabelle zu verwenden, wenn Sie oder habenz t 50 100 Freiheitsgrade), Ihre Daten sind ausreichend normal und Sie scheinen keine Ausreißer zu haben. Leider haben Sie relativ wenige Daten (13 oder 15 pro Gruppe), einige Abweichungen und möglicherweise einige Ausreißer. Ich bin mir nicht sicher, ob dies schlimm genug ist, um eine große Sache daraus zu machen, aber Sie könnten gewichtete kleinste Quadrate mit robusten Methoden mischen . Anstatt die Varianz als Maß für die Streuung zu verwenden (die für Ausreißer empfindlich ist, insbesondere bei niedrigem ), können Sie auch den Kehrwert des Interquartilbereichs verwenden (der von bis zu 50% Ausreißern in jeder Gruppe nicht beeinflusst wird). Diese Gewichte könnten dann mit einer robusten Regression unter Verwendung einer anderen Verlustfunktion wie Tukeys Bisquadrat kombiniert werden: N
Die Gewichte hier sind nicht so extrem. Die vorausgesagten Gruppe Mittel unterscheiden sich geringfügig (
A
: WLS0.36673
, robust0.35722
;B
: WLS0.77646
, robust0.70433
;C
: WLS0.50554
, robust0.51845
), mit den MittelnB
undC
weniger extreme Werte gezogen wird.In der Ökonometrie ist der Huber-White- Standardfehler ("Sandwich") sehr beliebt. Wie bei der Welch-Korrektur ist es auch hier nicht erforderlich, dass Sie die Abweichungen a priori kennen und die Gewichte anhand Ihrer Daten schätzen und / oder von einem Modell abhängig machen, das möglicherweise nicht korrekt ist. Andererseits weiß ich nicht, wie ich das in eine ANOVA integrieren soll, was bedeutet, dass Sie sie nur für die Tests einzelner Dummy-Codes erhalten, was mir in diesem Fall weniger hilfreich erscheint, aber ich werde sie trotzdem demonstrieren:
Die Funktiont t t
vcovHC
berechnet eine heteroskedastische konsistente Varianz-Kovarianz-Matrix für Ihre Betas (Ihre Dummy-Codes), wofür die Buchstaben im Funktionsaufruf stehen. Um Standardfehler zu erhalten, extrahieren Sie die Hauptdiagonale und nehmen die Quadratwurzeln. Um Tests für Ihre Betas zu erhalten, dividieren Sie Ihre Koeffizientenschätzungen durch die SEs und vergleichen Sie die Ergebnisse mit der entsprechenden Verteilung ( dh der Verteilung mit Ihren verbleibenden Freiheitsgraden).Fürp
R
Benutzer bemerkt @TomWenseleers in den Kommentaren unten, dass die Funktion ? Anova imcar
Paket einwhite.adjust
Argument akzeptieren kann, um einen Wert für den Faktor zu erhalten, der heteroskedastische konsistente Fehler verwendet.Sie können versuchen, eine empirische Schätzung der tatsächlichen Stichprobenverteilung Ihrer Teststatistik durch Bootstrapping zu erhalten . Zunächst erstellen Sie eine echte Null, indem Sie alle Gruppenmittelwerte exakt gleich machen. Anschließend nehmen Sie eine erneute Abtastung mit Ersatz vor und berechnen Ihre Teststatistik ( ) für jede Bootprobe, um eine empirische Schätzung der Stichprobenverteilung von unter der Null mit Ihren Daten zu erhalten, unabhängig von deren Status in Bezug auf Normalität oder Homogenität. Der Anteil dieser Stichprobenverteilung, der so extrem oder extremer ist als Ihre beobachtete Teststatistik, ist der Wert:F F p
In mancher Hinsicht ist Bootstrapping der ultimative Ansatz mit reduzierten Annahmen, um eine Analyse der Parameter (z. B. Mittelwerte) durchzuführen. Es wird jedoch vorausgesetzt, dass Ihre Daten eine gute Darstellung der Grundgesamtheit sind, was bedeutet, dass Sie eine angemessene Stichprobengröße haben. Da Ihre 's klein sind, kann es weniger vertrauenswürdig sein. Wahrscheinlich besteht der ultimative Schutz gegen Nichtnormalität und Heterogenität in der Verwendung eines nichtparametrischen Tests. Die grundlegende nicht parametrische Version einer ANOVA ist der Kruskal-Wallis-Test :n
Obwohl der Kruskal-Wallis-Test definitiv der beste Schutz gegen Typ-I-Fehler ist, kann er nur mit einer einzelnen kategorialen Variablen (dh ohne kontinuierliche Prädiktoren oder faktorielle Konstruktionen) verwendet werden und hat die geringste Aussagekraft aller diskutierten Strategien. Ein weiterer nicht parametrischer Ansatz ist die Verwendung der ordinalen logistischen Regression . Dies scheint für viele Leute seltsam, aber Sie müssen nur davon ausgehen, dass Ihre Antwortdaten legitime Ordinalinformationen enthalten, was sie sicherlich tun, oder jede andere der oben genannten Strategien ist ebenfalls ungültig:
Möglicherweise geht aus der Ausgabe nichts hervor, aber der Test des gesamten Modells, der in diesem Fall der Test Ihrer Gruppen ist, ist derp
chi2
schlechtesteDiscrimination Indexes
. Es werden zwei Versionen aufgelistet, ein Wahrscheinlichkeitsquotiententest und ein Punktetest. Der Likelihood-Ratio-Test wird normalerweise als der beste angesehen. Es ergibt sich ein Wert von .0.0363
quelle
car
auch die Option gibt, diewhite.adjust=T
Behandlung der Heteroskedazität mithilfe von Standardfehlern mit Weiß-korrigierter Heteroskedastizitätlm
's erwähnt, aber es scheint auch füraov
' s zu funktionieren (Optionen fürwhite.adjust
sindwhite.adjust=c(FALSE, TRUE, "hc3", "hc0", "hc1", "hc2", "hc4")
- für weitere Informationen siehe?hccm
)