La teoría detrás del argumento de los pesos en R cuando se usa lm ()

12

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 \ epsilonyRnXn×pβRp ϵ N ( 0 , σ 2 V )ϵRnϵN(0,σ2V)V=diag(v1,v2,,vn)σ2>0

y=Xβ+ϵ
bajo los supuestos se llama el modelo de "mínimos cuadrados ponderados". El problema de WLS termina siendo encontrar
argminβ(yXβ)TV1(yXβ).
Supongamos que y=[y1yn]T , β=[β1βp]T y
X=[x11x1px21x2pxn1xnp]=[x1Tx2TxnT].
xiTβR1 , entonces
yXβ=[y1x1Tβy2x2TβynxnTβ].
Esto da
(yXβ)TV1=[y1x1Tβy2x2TβynxnTβ]diag(v11,v21,,vn1)=[v11(y1x1Tβ)v21(y2x2Tβ)vn1(ynxnTβ)]
v_n ^ {- 1} (y_n- \ mathbf {x} _ {n} ^ {T} \ boldsymbol \ beta) \ end {bmatrix} \ end {align} dando así
argminβ(yXβ)TV1(yXβ)=argminβi=1nvi1(yixiTβ)2.
β se estima usando
β^=(XTV1X)1XTV1y.
Esta es la extensión del conocimiento con el que estoy familiarizado. Nunca me enseñaron cómo deberían elegirse v1,v2,,vn , aunque parece que, a juzgar por esto , generalmente Var(ϵ)=diag(σ12,σ22,,σn2), lo que tiene sentido intuitivo. (Proporcione pesos muy variables menos peso en el problema WLS, y brinde observaciones con menos variabilidad más peso).

Lo que me interesa especialmente es cómo Rmaneja los pesos en la lm()función cuando los pesos se asignan como enteros. De usar ?lm:

Las no NULLponderaciones 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).wiyiwiwiyi

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):V=diag(50,85,75)

[β^0β^1]=([111111]diag(1/50,1/85,1/75)[111111]T)1[111111]Tdiag(1/50,1/85,1/75)[0.250.750.85]
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?

Clarinetista
fuente

Respuestas:

4

La matriz debe ser no Además, tu deberías ser , no .X

[101112],
[111111].
V_invdiag(weights)diag(1/weights)
x <- c(0, 1, 2)
y <- c(0.25, 0.75, 0.85)
weights <- c(50, 85, 75)
X <- cbind(1, x)

> solve(t(X) %*% diag(weights) %*% X, t(X) %*% diag(weights) %*% y)
       [,1]
  0.3495122
x 0.2834146
mark999
fuente
¡Gracias por aclarar la matriz de diseño incorrecta, especialmente! Estoy bastante oxidado con este material. Entonces, como última pregunta, ¿significa esto que en los supuestos de WLS? Var(ϵ)=diag(1/weights)
Clarinetista
Sí, aunque los pesos solo tienen que ser proporcionales a 1 / varianza, no necesariamente iguales. Por ejemplo, si usa weights <- c(50, 85, 75)/2en su ejemplo, obtendrá el mismo resultado.
mark999
3

Para responder esto de manera más concisa, la regresión ponderada de mínimos cuadrados usando weightsin Rhace los siguientes supuestos: supongamos que tenemos weights = 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, tenemos yRnXn×pβRpϵRn0σ2Vσ2>0

V=diag(1/w1,1/w2,,1/wn).
argminβ(yXβ)TV1(yXβ)=argminβi=1n(1/wi)1(yixiTβ)2=argminβi=1nwi(yixiTβ)2
y se estima usando del GLS supuestos .β
β^=(XTV1X)1XTV1y
Clarinetista
fuente