Nach einem Jahr in der Graduiertenschule verstehe ich die "gewichteten kleinsten Quadrate" wie folgt: Sei , eine Entwurfsmatrix, \ boldsymbol \ beta \ in \ mathbb {R} ^ p ist ein Parametervektor, \ boldsymbol \ epsilon \ in \ mathbb {R} ^ n ist ein Fehlervektor, so dass \ boldsymbol \ epsilon \ sim \ mathcal {N} (\ mathbf {0}, \ sigma ^ 2 \ mathbf {V}) , wobei \ mathbf {V} = \ text {diag} (v_1, v_2, \ dots, v_n) und \ sigma ^ 2> 0 . Dann das Modell \ mathbf {y} = \ mathbf {X} \ boldsymbol \ beta + \ boldsymbol \ epsilon
Was mich besonders interessiert, ist, wie R
Gewichte in der lm()
Funktion behandelt werden, wenn Gewichte Ganzzahlen zugewiesen werden. Von der Verwendung ?lm
:
Nichtgewichte
NULL
können verwendet werden, um anzuzeigen, dass unterschiedliche Beobachtungen unterschiedliche Abweichungen aufweisen (wobei die Werte in Gewichten umgekehrt proportional zu den Abweichungen sind); oder äquivalent, wenn die Elemente von Gewichten positive ganze Zahlen sind, ist jede Antwort der Mittelwert von Einheitsgewichtsbeobachtungen (einschließlich des Falls, dass es Beobachtungen gibt, die gleich und die Daten zusammengefasst wurden).
Ich habe diesen Absatz mehrmals gelesen und es macht für mich keinen Sinn. Angenommen, ich habe unter Verwendung des oben entwickelten Frameworks die folgenden simulierten Werte:
x <- c(0, 1, 2)
y <- c(0.25, 0.75, 0.85)
weights <- c(50, 85, 75)
lm(y~x, weights = weights)
Call:
lm(formula = y ~ x, weights = weights)
Coefficients:
(Intercept) x
0.3495 0.2834
Wie werden diese Parameter unter Verwendung des oben entwickelten Frameworks abgeleitet? Hier ist mein Versuch, dies von Hand zu tun: Unter der Annahme von haben wir und dies in ergibt (beachten Sie, dass die Invertierbarkeit in diesem Fall nicht funktioniert, daher habe ich eine verallgemeinerte Umkehrung verwendet):
R
X <- matrix(rep(1, times = 6), byrow = T, nrow = 3, ncol = 2)
V_inv <- diag(c(1/50, 1/85, 1/75))
y <- c(0.25, 0.75, 0.85)
library(MASS)
ginv(t(X) %*% V_inv %*% X) %*% t(X) %*% V_inv %*% y
[,1]
[1,] 0.278913
[2,] 0.278913
Diese stimmen nicht mit den Werten aus der lm()
Ausgabe überein . Was mache ich falsch?
quelle
weights <- c(50, 85, 75)/2
beispielsweise in Ihrem Beispiel verwenden, erhalten Sie das gleiche Ergebnis.Um dies genauer zu beantworten, geht die gewichtete Regression der kleinsten Quadrate unter Verwendung vony∈Rn X n×p β∈Rp ϵ∈Rn 0 σ2V σ2>0
weights
in vonR
folgenden Annahmen aus: Nehmen wir an, wir habenweights = c(w_1, w_2, ..., w_n)
. Sei , eine Entwurfsmatrix, ein Parametervektor und ist ein Fehlervektor mit dem Mittelwert und der Varianzmatrix , wobei . Dann ist Nach den gleichen Schritten der Ableitung im ursprünglichen Beitrag haben wirquelle