Después de un año en la escuela de posgrado, mi comprensión de los "mínimos cuadrados ponderados" es la siguiente: let , sea una matriz de diseño , \ boldsymbol \ beta \ in \ mathbb {R} ^ p sea un vector de parámetros, \ boldsymbol \ epsilon \ in \ mathbb {R} ^ n sea un vector de error tal que \ boldsymbol \ epsilon \ sim \ mathcal {N} (\ mathbf {0}, \ sigma ^ 2 \ mathbf {V}) , donde \ mathbf {V} = \ text {diag} (v_1, v_2, \ dots, v_n) y \ sigma ^ 2> 0 . Entonces el modelo \ mathbf {y} = \ mathbf {X} \ boldsymbol \ beta + \ boldsymbol \ epsilon ϵ ∼ N ( 0 , σ 2 V )
Lo que me interesa especialmente es cómo R
maneja los pesos en la lm()
función cuando los pesos se asignan como enteros. De usar ?lm
:
Las no
NULL
ponderaciones se pueden usar para indicar que las diferentes observaciones tienen diferentes variaciones (con los valores en pesos inversamente proporcionales a las variaciones); o de manera equivalente, cuando los elementos de los pesos son enteros positivos , que cada respuesta es la media de las observaciones de peso unitario (incluido el caso de que hay observaciones iguales a y los datos se han resumido).
He releído este párrafo varias veces, y no tiene sentido para mí. Usando el marco que desarrollé anteriormente, supongamos que tengo los siguientes valores simulados:
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
Usando el marco que he desarrollado anteriormente, ¿cómo se derivan estos parámetros? Aquí está mi intento de hacer esto a mano: suponiendo , tenemos y hacer esto en give (tenga en cuenta que la invertibilidad no funciona en este caso, por lo que utilicé un inverso generalizado):
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
Estos no coinciden con los valores de la lm()
salida. ¿Qué estoy haciendo mal?
fuente
weights <- c(50, 85, 75)/2
en su ejemplo, obtendrá el mismo resultado.Para responder esto de manera más concisa, la regresión ponderada de mínimos cuadrados usandoy∈Rn X n×p β∈Rp ϵ∈Rn 0 σ2V σ2>0
weights
inR
hace los siguientes supuestos: supongamos que tenemosweights = c(w_1, w_2, ..., w_n)
. Deje que , sea una matriz de diseño , sea un vector de parámetros y puede ser un vector de error con media y varianza matriz , donde . Luego, Siguiendo los mismos pasos de la derivación en la publicación original, tenemosfuente