Beim Umgang mit Daten mit Faktoren kann R verwendet werden, um die Mittelwerte für jede Gruppe mit der Funktion lm () zu berechnen. Dies gibt auch die Standardfehler für die geschätzten Mittelwerte an. Dieser Standardfehler unterscheidet sich jedoch von dem, was ich aus einer manuellen Berechnung erhalte.
Hier ist ein Beispiel (von hier aus Vorhersage des Unterschieds zwischen zwei Gruppen in R )
Berechnen Sie zuerst den Mittelwert mit lm ():
mtcars$cyl <- factor(mtcars$cyl)
mylm <- lm(mpg ~ cyl, data = mtcars)
summary(mylm)$coef
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.663636 0.9718008 27.437347 2.688358e-22
cyl6 -6.920779 1.5583482 -4.441099 1.194696e-04
cyl8 -11.563636 1.2986235 -8.904534 8.568209e-10
Der Achsenabschnitt ist der Mittelwert für die erste Gruppe, die 4-Zylinder-Autos. Um die Mittel durch direkte Berechnung zu erhalten, benutze ich Folgendes:
with(mtcars, tapply(mpg, cyl, mean))
4 6 8
26.66364 19.74286 15.10000
Um die Standardfehler für die Mittelwerte zu erhalten, berechne ich die Standardvariation der Stichprobe und dividiere durch die Anzahl der Beobachtungen in jeder Gruppe:
with(mtcars, tapply(mpg, cyl, sd)/sqrt(summary(mtcars$cyl)) )
4 6 8
1.3597642 0.5493967 0.6842016
Die direkte Berechnung ergibt den gleichen Mittelwert, aber der Standardfehler ist für die beiden Ansätze unterschiedlich. Ich hatte erwartet, den gleichen Standardfehler zu erhalten. Was geht hier vor sich? Es hängt damit zusammen, dass lm () den Mittelwert für jede Gruppe und einen Fehlerterm anpasst.
Bearbeitet: Nach Svens Antwort (unten) kann ich meine Frage präziser und klarer formulieren.
Für kategoriale Daten können wir die Mittelwerte einer Variablen für verschiedene Gruppen berechnen, indem wir lm () ohne Achsenabschnitt verwenden.
mtcars$cyl <- factor(mtcars$cyl)
mylm <- lm(mpg ~ cyl, data = mtcars)
summary(mylm)$coef
Estimate Std. Error
cyl4 26.66364 0.9718008
cyl6 19.74286 1.2182168
cyl8 15.10000 0.8614094
Wir können dies mit einer direkten Berechnung der Mittelwerte und ihrer Standardfehler vergleichen:
with(mtcars, tapply(mpg, cyl, mean))
4 6 8
26.66364 19.74286 15.10000
with(mtcars, tapply(mpg, cyl, sd)/sqrt(summary(mtcars$cyl)) )
4 6 8
1.3597642 0.5493967 0.6842016
Die Mittelwerte sind genau gleich, aber die Standardfehler unterscheiden sich für diese beiden Methoden (wie Sven ebenfalls bemerkt). Meine Frage ist, warum sie unterschiedlich und nicht gleich sind.
(Sollte ich beim Bearbeiten meiner Frage den Originaltext löschen oder meine Ausgabe wie bisher hinzufügen)