Hoffentlich ist dies eine Frage, die mir hier jemand zur Art der Zerlegung von Quadratsummen aus einem Modell mit gemischten Effekten beantworten kann, das dazu passt lmer
(aus dem Paket lme4 R).
Zuallererst sollte ich sagen, dass mir die Kontroverse bei der Verwendung dieses Ansatzes bewusst ist, und in der Praxis würde ich eher ein Bootstrap-LRT verwenden, um Modelle zu vergleichen (wie von Faraway, 2006, vorgeschlagen). Ich bin jedoch verwirrt darüber, wie ich die Ergebnisse replizieren soll, und aus Gründen meiner eigenen Vernunft dachte ich, ich würde hier nachfragen.
Grundsätzlich beschäftige ich mich mit Modellen mit gemischten Effekten, die zum lme4
Paket passen . Ich weiß, dass Sie den anova()
Befehl verwenden können, um eine Zusammenfassung der sequenziellen Tests der Fixeffekte im Modell zu erhalten. Soweit ich weiß, wird dies von Faraway (2006) als "Expected Mean Squares" -Ansatz bezeichnet. Ich möchte wissen, wie die Quadratsummen berechnet werden.
Ich weiß, dass ich die geschätzten Werte aus einem bestimmten Modell (unter Verwendung von coef()
) nehmen, davon ausgehen kann, dass sie fest sind, und dann Tests unter Verwendung der Quadratsummen von Modellresten mit und ohne die interessierenden Faktoren durchführen kann. Dies ist in Ordnung für ein Modell, das einen einzelnen subjektinternen Faktor enthält. Wenn jedoch ein Split-Plot-Design implementiert wird, entspricht die Summe der Quadrate, die ich erhalte, dem Wert, der von R unter Verwendung aov()
einer geeigneten Error()
Bezeichnung erzeugt wird. Dies ist jedoch nicht dasselbe wie die vom anova()
Befehl auf dem Modellobjekt erzeugten Quadratsummen , obwohl die F-Verhältnisse gleich sind.
Dies ist natürlich völlig sinnvoll, da die Error()
Schichten in einem gemischten Modell nicht benötigt werden . Dies muss jedoch bedeuten, dass die Quadratsummen in einem gemischten Modell irgendwie bestraft werden, um geeignete F-Verhältnisse bereitzustellen. Wie wird das erreicht? Und wie korrigiert das Modell die Summe der Quadrate zwischen den Plots, aber nicht die Summe der Quadrate innerhalb der Plots? Offensichtlich ist dies etwas, was für eine klassische Split-Plot-ANOVA erforderlich ist, bei der unterschiedliche Fehlerwerte für die verschiedenen Effekte festgelegt wurden. Wie kann ein Mixed-Effect-Modell dies berücksichtigen?
Grundsätzlich möchte ich in der Lage sein, die Ergebnisse des anova()
Befehls, der auf ein früheres Modellobjekt angewendet wurde, selbst zu replizieren , um die Ergebnisse und mein Verständnis zu überprüfen. Derzeit kann ich dies jedoch für ein normales themeninternes Design erreichen, jedoch nicht für die Teilung. Plot Design und ich kann nicht scheinen herauszufinden, warum dies der Fall ist.
Als Beispiel:
library(faraway)
library(lme4)
data(irrigation)
anova(lmer(yield ~ irrigation + variety + (1|field), data = irrigation))
Analysis of Variance Table
Df Sum Sq Mean Sq F value
irrigation 3 1.6605 0.5535 0.3882
variety 1 2.2500 2.2500 1.5782
summary(aov(yield ~ irrigation + variety + Error(field/irrigation), data = irrigation))
Error: field
Df Sum Sq Mean Sq F value Pr(>F)
irrigation 3 40.19 13.40 0.388 0.769
Residuals 4 138.03 34.51
Error: Within
Df Sum Sq Mean Sq F value Pr(>F)
variety 1 2.25 2.250 1.578 0.249
Residuals 7 9.98 1.426
Wie zu sehen ist, stimmen vor allem die F-Verhältnisse überein. Auch die Quadratsummen für die Vielfalt stimmen überein. Die Quadratsummen für die Bewässerung stimmen jedoch nicht überein, jedoch scheint die geringere Ausgabe skaliert zu sein. Was macht der Befehl anova () eigentlich?
quelle
mixed()
vonafex
der aus Sie die gewünschten Angebote erhalten (übermethod = "PB"
). Und da Sie offensichtlich einige Tests mit Spielzeugdaten durchgeführt haben, wäre es auf jeden Fall hilfreich, wenn Sie diese Äquivalenzen mit den Daten und dem Code zeigen können (daher keine +1).Antworten:
Nutze die Quelle, Luke. Wir können damit einen Blick in die ANOVA-Funktion werfen
getAnywhere(anova.Mermod)
. Der erste Teil dieser Funktion dient zum Vergleichen zweier verschiedener Modelle. Die Anova für die Fixeffekte kommtelse
in der zweiten Hälfte in den großen Block:object
ist die niedrigere Ausgabe. Wir beginnen die Summe der Quadrate in Zeile 5 zu berechnen:ss <- as.vector ...
Der Code multipliziert die festen Parameter (inbeta
) mit einer oberen Dreiecksmatrix; dann quadriert jeder Begriff. Hier ist die obere Dreiecksmatrix für das Bewässerungsbeispiel. Jede Zeile entspricht einem der fünf Parameter für feste Effekte (Achsenabschnitt, 3 Freiheitsgrade für die Bewässerung, 1 df für die Sorte).In der ersten Zeile sehen Sie die Summe der Quadrate für den Achsenabschnitt und in der letzten Zeile die SS für den Sorteneffekt innerhalb der Felder. In den Zeilen 2 bis 4 sind nur die 3 Parameter für die Bewässerungsstufen enthalten. Durch Vormultiplikation erhalten Sie drei SS-Teile für die Bewässerung.
Diese Stücke sind an sich nicht interessant, da sie vom Standardbehandlungskontrast in R herrühren, aber in Zeile
ss <- unlist(lapply(split ....
Bates werden Bits von Quadratsummen entsprechend der Anzahl der Ebenen und den Faktoren, auf die sie sich beziehen, aufgesammelt. Hier wird viel Buch geführt. Wir erhalten auch die Freiheitsgrade (die 3 für die Bewässerung sind). Dann erhält er die mittleren Quadrate, die auf dem Ausdruck von erscheinenanova
. Schließlich dividiert er alle seine Mittelquadrate durch die Restvarianz innerhalb der Gruppesigma(object)^2
.lmer
aov
lmer
RX
Asymptotisch haben die Schätzungen der festen Effekte eine Verteilung:
Beachten Sie, dass Sie nicht die gleiche F-Statistik erhalten hätten, wenn die Daten nicht ausgeglichen wären. Sie hätten auch nicht die gleiche F-Statistik erhalten, wenn Sie ML anstelle von REML verwendet hätten.
aov
Interessanterweise empfehlen Bates und Pinheiro, die ANOVA zu verwenden, anstatt zwei Modelle anzupassen und einen Likelihood-Ratio-Test durchzuführen. Letzteres neigt dazu, anti-konservativ zu sein.
Wie Sie sehen, enthalten die Quadratsummen für die Bewässerungsparameter jetzt auch einen Teil des
variety
Effekts.quelle