Let: üniversitedeyken bir yıl sonra, "ağırlıklı en küçük kareler" benim anlayış aşağıdaki olan , bazı olmak tasarım matrisi, \ boldsymbol \ beta \ in \ mathbb {R} ^ p bir parametre vektörü, \ boldsymbol \ epsilon \ in \ mathbb {R} ^ n bir hata vektörü olacak, öyle ki \ boldsymbol \ epsilon \ sim \ mathcal {N} (\ mathbf {0}, \ sigma ^ 2 \ mathbf {V}) ; burada \ mathbf {V} = \ text {diag} (v_1, v_2, \ dots, v_n) ve \ sigma ^ 2> 0 . Sonra \ mathbf {y} = \ mathbf {X} \ boldsymbol \ beta + \ boldsymbol \ epsilon modeli X n × p ϵ ∼ N ( 0 , σ 2 V ) V = diag ( v 1 , v 2 , … , v n ) σ 2 > 0 y = X β + ε
Özellikle merak ettiğim şey, R
ağırlıklar lm()
tamsayı olarak atandığında işlevdeki ağırlıkların nasıl işleneceğidir. Kullanarak ?lm
:
Ağırlıksızlıklar
NULL
, farklı gözlemlerin farklı varyanslara sahip olduğunu belirtmek için kullanılabilir (ağırlıklardaki değerler varyanslarla ters orantılıdır); veya eşdeğer olarak, ağırlıkların elemanları pozitif tamsayıları , her bir cevabı , birim ağırlığı gözlemlerinin ortalamasıdır ( eşit gözlemlerinin ve verilerin özetlenmesi).y i w i w i y i
Bu paragrafı birkaç kez okudum ve bu benim için bir anlam ifade etmiyor. Yukarıda geliştirdiğim çerçeveyi kullanarak, aşağıdaki simüle edilmiş değerlere sahip olduğumu varsayalım:
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
Yukarıda geliştirdiğim çerçeveyi kullanarak, bu parametreler nasıl türetilir? Bunu el ile yapma girişimim: varsayarsak , ve bunu yaparak verir ( bu durumda çalışmadığını unutmayın, bu yüzden genelleştirilmiş bir ters kullandım):
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
Bunlar lm()
çıktıdaki değerlerle eşleşmiyor . Neyi yanlış yapıyorum?