Depois de um ano na pós-graduação, meu entendimento de "mínimos quadrados ponderados" é o seguinte: seja , seja algumas \ n p vezes matriz de design \ boldsymbol \ beta \ in \ mathbb {R} ^ p seja um vetor de parâmetro, \ boldsymbol \ epsilon \ in \ mathbb {R} ^ n seja um vetor de erro tal que \ boldsymbol \ epsilon \ sim \ mathcal {N} (\ mathbf {0}, \ sigma ^ 2 \ mathbf {V}) , onde \ mathbf {V} = \ text {diag} (v_1, v_2, \ pontos, v_n) e \ sigma ^ 2> 0 . Em seguida, o modelo \ mathbf {y} = \ mathbf {X} \ boldsymbol \ beta + \ boldsymbol \ epsilon
O que me interessa particularmente é como R
lida com pesos na lm()
função quando pesos são designados como números inteiros. De usar ?lm
:
Não
NULL
pesos podem ser usados para indicar que observações diferentes têm variações diferentes (com os valores em pesos sendo inversamente proporcionais às variações); ou equivalentemente, quando os elementos dos pesos são inteiros positivos , que cada resposta é a média de observações de peso unitário (incluindo o caso em que existem observações iguais a e os dados foram resumidos).
Reli este parágrafo várias vezes e não faz sentido para mim. Usando a estrutura que desenvolvi acima, suponha que possua os seguintes 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 a estrutura que desenvolvi acima, como esses parâmetros são derivados? Aqui está minha tentativa de fazer isso manualmente: assumindo que , temos e fazendo isso no give (observe que a invertibilidade não funciona neste caso, então eu usei uma inversa generalizada):
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
Estes não correspondem aos valores da lm()
saída. O que estou fazendo de errado?