Ich habe seit Jahren Typ III SS in R scheinbar ohne Problem verwendet. Aber jetzt habe ich ein Problem mit Typ-III-Summen von Quadraten in R, die höchst widersprüchliche Ergebnisse mit dem Auto-Paket ergeben.R Typ III SS produziert inkonsistente Ergebnisse
Ja, ich führe diese Codezeile jedes Mal.
options(contrasts = c("contr.treatment", "contr.poly"))
Das Modell Ich verwende, ist dies:
M1 <- aov(Response ~ Location + Time + Fish*Nutrient, data=data)
Anova(M1, type="III")
Lage (2), Zeit (3), Fisch (3) und Nährstoff (3) sind alle kategorischen Variablen (# Ebene in Klammern). Wenn diese kategorischen Variablen als Zahlen in der Datendatei aufgeführt sind, führen Sie I (ein Beispiel):
data$Fish <- as.factor(data$Fish)
Dies sind die Ergebnisse, die ich mit SAS erhalten:
Sum Sq Df F value Pr(>F)
Location 13.122 1 22.08 <.0001
Time 15.746 2 7.87 <.0001
Fish 25.876 2 12.94 <.0001
Nutrient 22.074 2 11.04 <.0001
Fish:Nutrient 13.780 4 3.44 0.0006
Als ich lief dies zunächst in RI Nährstoff- und Fisch hatte mit allen numerischen Werten für jede Ebene und lief as.factor für jede Variable und erhielt diese Ergebnisse:
Sum Sq Df F value Pr(>F)
(Intercept) 56.827 1 95.6078 2.758e-13 ***
Location 13.122 1 22.0767 2.020e-05 ***
Time 15.746 2 13.2459 2.328e-05 ***
Fish 24.682 2 20.7632 2.531e-07 ***
Nutrient 0.424 2 0.3567 0.7017240
Fish:Nutrient 13.780 4 5.7959 0.0006352 ***
Residuals 30.313 51
die einzigen Variablen über die verschieden sind, Fisch und Nu trient, und das gleiche gilt für jede nachfolgende Iteration.
Ich ging dann hinein und machte eine kleine Änderung am Datenblatt, eine der drei Ebenen von Fisch (ursprünglich 0, 1, 2) zu ändern (z, 1, 2). Die Ausgabe hat sich geändert in:
Sum Sq Df F value Pr(>F)
(Intercept) 5.3556 1 9.0104 0.0041488 **
Location 13.1220 1 22.0767 2.020e-05 ***
Time 15.7462 2 13.2459 2.328e-05 ***
Fish 24.6825 2 20.7632 2.531e-07 ***
Nutrient 17.7692 2 14.9477 7.780e-06 ***
Fish:Nutrient 13.7799 4 5.7959 0.0006352 ***
Residuals 30.3134 51
Eine große Veränderung! Und die Ausgabe ändert sich nicht, abhängig davon, ob ich als Faktor für diese neuen Ebenen laufe oder nicht.
I dann ein weitere Ebene des Fisches geändert (jetzt: z, o, 2) und der Ausgang nur geringfügig verändert:
Sum Sq Df F value Pr(>F)
(Intercept) 7.6351 1 12.8455 0.0007557 ***
Location 13.1220 1 22.0767 2.020e-05 ***
Time 15.7462 2 13.2459 2.328e-05 ***
Fish 24.6825 2 20.7632 2.531e-07 ***
Nutrient 17.6604 2 14.8562 8.243e-06 ***
Fish:Nutrient 13.7799 4 5.7959 0.0006352 ***
Residuals 30.3134 51
Nach der letzten Stufe der Fische zu wechseln (z, o, t) der Ausgabe änderte sich leicht zu:
Der obige Ausgang ist identisch mit den letzten drei, die ich unten anzeigen.
Dann habe ich bewegt, um Nährstoff zu manipulieren (ursprünglich: 0, 4, 8), während Fisch auf den neuen Ebenen (z, o, t) gehalten wird. Ich änderte ersten Nährstoff (c, 4, 8):
Sum Sq Df F value Pr(>F)
(Intercept) 27.783 1 46.7425 9.854e-09 ***
Location 13.122 1 22.0767 2.020e-05 ***
Time 15.746 2 13.2459 2.328e-05 ***
Fish 14.578 2 12.2628 4.484e-05 ***
Nutrient 17.769 2 14.9477 7.780e-06 ***
Fish:Nutrient 13.780 4 5.7959 0.0006352 ***
Residuals 30.313 51
Ändern zwei Ebene (c, f, 8):
Sum Sq Df F value Pr(>F)
(Intercept) 51.708 1 86.9940 1.313e-12 ***
Location 13.122 1 22.0767 2.020e-05 ***
Time 15.746 2 13.2459 2.328e-05 ***
Fish 0.396 2 0.3332 0.7182029
Nutrient 17.769 2 14.9477 7.780e-06 ***
Fish:Nutrient 13.780 4 5.7959 0.0006352 ***
Residuals 30.313 51
Eine weitere große Veränderung!
Und drei Ebenen (c, f, e) die Ergebnisse in einem anderen großen Veränderung in Fisch, mit den engsten Ergebnisse mit denen von SAS:
Sum Sq Df F value Pr(>F)
(Intercept) 5.3556 1 9.0104 0.0041488 **
Location 13.1220 1 22.0767 2.020e-05 ***
Time 15.7462 2 13.2459 2.328e-05 ***
Fish 24.6825 2 20.7632 2.531e-07 ***
Nutrient 17.7692 2 14.9477 7.780e-06 ***
Fish:Nutrient 13.7799 4 5.7959 0.0006352 ***
Residuals 30.3134 51
Die Lage war auch ursprünglich eine numerische Variable mit zwei Ebenen (1 , 2).Also habe ich dann eine Ebene (y, 2):
Sum Sq Df F value Pr(>F)
(Intercept) 24.474 1 41.1763 4.535e-08 ***
Location 13.122 1 22.0767 2.020e-05 ***
Time 15.746 2 13.2459 2.328e-05 ***
Fish 24.683 2 20.7632 2.531e-07 ***
Nutrient 17.769 2 14.9477 7.780e-06 ***
Fish:Nutrient 13.780 4 5.7959 0.0006352 ***
Residuals 30.313 51
Und dann zwei Ebenen (y, z):
Sum Sq Df F value Pr(>F)
(Intercept) 5.3556 1 9.0104 0.0041488 **
Location 13.1220 1 22.0767 2.020e-05 ***
Time 15.7462 2 13.2459 2.328e-05 ***
Fish 24.6825 2 20.7632 2.531e-07 ***
Nutrient 17.7692 2 14.9477 7.780e-06 ***
Fish:Nutrient 13.7799 4 5.7959 0.0006352 ***
Residuals 30.3134 51
Nein, es ändern, wenn Location Manipulation und das gleiche gilt für die Zeit. Also, warum sind meine Ergebnisse für Ort, Zeit und die Fisch: Nährstoff-Interaktion konsistent während all dies und identisch mit denen von SAS, doch die Ergebnisse für Fisch und Nährstoff ständig ändern und nie das Gleiche?
Es scheint, dass etwas falsch sein muss, dass solch große Änderungen mit nur geringfügigen Änderungen am Datenblatt auftreten, die selbst keinen Einfluss auf die Ergebnisse haben sollten. Ich habe mich bemüht, die oben genannten Modelle unter den gleichen Bedingungen zu betreiben. Die einzigen Änderungen betreffen die Datenblätter, die ich erwähnt habe.
Beachten Sie auch, dass ich das Problem mit einem ähnlichen Satz von Variablen und Ebenen replizieren konnte, mit ähnlichen Manipulationen von vollständig zusammengestellten Daten.
Das hat funktioniert. Vielen Dank! – Matt