Po roku nauki w szkole, moje rozumienie „ważonych najmniejszych kwadratów” jest następujące: niech , będzie jakaś macierzą projektową, \ boldsymbol \ beta \ in \ mathbb {R} ^ p być wektorem parametrów, \ boldsymbol \ epsilon \ in \ mathbb {R} ^ n być wektorem błędu takim, że \ boldsymbol \ epsilon \ sim \ mathcal {N} (\ mathbf {0}, \ sigma ^ 2 \ mathbf {V}) , gdzie \ mathbf {V} = \ text {diag} (v_1, v_2, \ dots, v_n) i \ sigma ^ 2> 0 . Następnie model \ mathbf {y} = \ mathbf {X} \ boldsymbol \ beta + \ boldsymbol \ epsilon
Szczególnie mnie ciekawi, jak R
obsługuje wagi w lm()
funkcji, gdy wagi są przypisane jako liczby całkowite. Z użycia ?lm
:
Długoterminowe
NULL
wagi mogą być stosowane w celu wskazania, że różne spostrzeżenia mają różne odchylenia (z wartościami wagi są odwrotnie proporcjonalne do odchylenia); lub równoważnie, gdy elementy wag są dodatnimi liczbami całkowitymi , że każda odpowiedź jest średnią z obserwacji masy jednostkowej (w tym przypadku, gdy obserwacje są równe a dane zostały podsumowane).
Przeczytałem ten akapit kilka razy i nie ma to dla mnie sensu. Korzystając ze środowiska, które opracowałem powyżej, załóżmy, że mam następujące symulowane wartości:
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
W jaki sposób opracowano te parametry przy użyciu wyżej opracowanego środowiska? Oto moja próba zrobienia tego ręcznie: zakładając, że , mamy i zrobienie tego w daje (zauważ, że odwracalność nie działa w tym przypadku, więc użyłem uogólnionej odwrotności):
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
Nie pasują one do wartości z danych lm()
wyjściowych. Co ja robię źle?