Ich habe einen Datensatz von 482 Beobachtungen.
data=Populationfull
Ich werde eine Genotyp-Assoziationsanalyse für 3 SNPs durchführen. Ich versuche ein Modell für meine Analyse zu erstellen und verwende das aov (y ~ x, data = ...). Für ein Merkmal habe ich mehrere feste Effekte und Kovariaten, die ich in das Modell aufgenommen habe, wie folgt:
Starts <- aov(Starts~Sex+DMRT3+Birthyear+Country+Earnings+Voltsec+Autosec, data=Populationfull) summary(Starts) Df Sum Sq Mean Sq F value Pr(>F) Sex 3 17.90 5.97 42.844 < 2e-16 *** DMRT3 2 1.14 0.57 4.110 0.017 * Birthyear 9 5.59 0.62 4.461 1.26e-05 *** Country 1 11.28 11.28 81.005 < 2e-16 *** Earnings 1 109.01 109.01 782.838 < 2e-16 *** Voltsec 1 12.27 12.27 88.086 < 2e-16 *** Autosec 1 8.97 8.97 64.443 8.27e-15 *** Residuals 463 64.48 0.14 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Ich habe festgestellt, dass ich, wenn ich die Reihenfolge der Variablen im Modell geändert habe, unterschiedliche p-Werte erhalten habe (siehe unten).
Starts2 <- aov(Starts~Voltsec+Autosec+Sex+DMRT3+Birthyear+Country+Earnings, data=Populationfull) summary(Starts2) Df Sum Sq Mean Sq F value Pr(>F) Voltsec 1 2.18 2.18 15.627 8.92e-05 *** Autosec 1 100.60 100.60 722.443 < 2e-16 *** Sex 3 10.43 3.48 24.962 5.50e-15 *** DMRT3 2 0.82 0.41 2.957 0.05294 . Birthyear 9 3.25 0.36 2.591 0.00638 ** Country 1 2.25 2.25 16.183 6.72e-05 *** Earnings 1 46.64 46.64 334.903 < 2e-16 *** Residuals 463 64.48 0.14 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Warum erhalte ich unterschiedliche p-Werte, je nachdem in welcher Reihenfolge die Variablen / Faktoren / Kovariaten / Fixeffekte (?) Codiert sind? Gibt es eine Möglichkeit, dies zu "korrigieren"? Kann es sein, dass ich das falsche Modell benutze? Ich bin noch ziemlich neu bei R, also wenn Sie mir dabei helfen können, halten Sie es bitte einfach, damit ich die Antwort verstehen kann, hehe ... Danke, hoffentlich kann mir jemand helfen, dies zu verstehen!
Populationfull
an, um Ihr Problem reproduzierbar zu machen . Dies ist beim Beispiel auf der Hilfeseite nicht der Fallaov()
.summary(aov(yield ~ block + N + P + K, npk)); summary(aov(yield ~ K + P + block + N , npk))
Earnings 1 109.01 109.01 782.838 < 2e-16 ***
dein zweiter LaufEarnings 1 46.64 46.64 334.903 < 2e-16 ***
. Ihre Ergebnisse sind nicht die gleichen. Überprüfen Sie zunächst, ob Sie nicht mehr als Variablen neu angeordnet haben.car
Paket zu schauen - es implementiert ANOVA vom Typ II und Typ III, die nicht von der Reihenfolge der Variablen abhängen, wohingegenaov
ANOVA vom Typ I.Antworten:
Das Problem ergibt sich aus der Art und Weise,
aov()
wie die Standard-Signifikanztests durchgeführt werden. Es wird eine sogenannte "Typ I" -AnOVA-Analyse verwendet, bei der die Tests in der Reihenfolge durchgeführt werden, in der die Variablen in Ihrem Modell angegeben sind. Im ersten Beispiel wird also bestimmt, wie viel Varianz durch erklärt wird,sex
und seine Signifikanz getestet. Dann wird der Teil der verbleibenden Varianz durch erklärtDMRT3
und seine Signifikanz in Bezug auf diese verbleibende Varianz getestet . Im zweiten BeispielDMRT3
wird nur nachVoltsec
,Autosec
undsex
in dieser Reihenfolge ausgewertet , sodass weniger VarianzDMRT3
zur Erklärung übrig bleibt .Wenn zwei Prädiktorvariablen korreliert sind, erhält die erste, die in das Modell eingegeben wurde, die volle "Gutschrift", so dass weniger Varianz durch die zweite "erklärt" werden muss, was daher möglicherweise weniger "statistisch signifikant" erscheint als die erste, selbst wenn dies der Fall ist nicht funktionell. Diese Frage und ihre Antwort erklären die verschiedenen Arten von ANOVA-Analysen.
Eine Möglichkeit, dies zu umgehen, besteht darin, sich aus den Beschränkungen der klassischen ANOVA zu extrahieren und ein einfaches lineares Modell mit
lm()
in R anstelle von zu verwendenaov()
. Dies analysiert effektiv alle Prädiktoren parallel und "korrigiert" alle Prädiktoren gleichzeitig. In diesem Fall können zwei korrelierte Prädiktoren große Standardfehler ihrer geschätzten Regressionskoeffizienten aufweisen, und ihre Koeffizienten können sich zwischen verschiedenen Stichproben aus der Grundgesamtheit unterscheiden, aber zumindest die Reihenfolge, in der Sie die Variablen in die Modellspezifikation eingeben, spielt keine Rolle.Wenn es sich bei Ihrer Antwortvariablen um eine Art Zählvariable handelt, wie der Name schon
Starts
sagt, sollten Sie ANOVA wahrscheinlich sowieso nicht verwenden, da Residuen wahrscheinlich nicht normal verteilt sind, wie es die Interpretation des p- Werts erfordert. Zählvariablen werden besser mit verallgemeinerten linearen Modellen (z. B.glm()
in R) behandelt, die als Verallgemeinerunglm()
für andere Arten von Restfehlerstrukturen angesehen werden können.quelle