Setelah satu tahun di sekolah pascasarjana, pemahaman saya tentang "kuadrat terkecil tertimbang" adalah sebagai berikut: biarkan , menjadi beberapa matriks desain , menjadi parameter vektor, \ boldsymbol \ epsilon \ in \ mathbb {R} ^ n menjadi vektor kesalahan sedemikian rupa sehingga \ boldsymbol \ epsilon \ sim \ mathcal {N} (\ mathbf {0}, \ sigma ^ 2 \ mathbf {V}) , di mana \ mathbf {V} = \ text {diag} (v_1, v_2, \ dots, v_n) dan \ sigma ^ 2> 0 . Kemudian model \ mathbf {y} = \ mathbf {X} \ boldsymbol \ beta + \ boldsymbol \ epsilon
Apa yang saya sangat ingin tahu tentang bagaimana R
menangani bobot dalam lm()
fungsi ketika bobot ditugaskan menjadi bilangan bulat. Dari menggunakan ?lm
:
Non-
NULL
bobot dapat digunakan untuk menunjukkan bahwa pengamatan yang berbeda memiliki varian yang berbeda (dengan nilai dalam bobot berbanding terbalik dengan varian); atau ekuivalen, ketika elemen bobot adalah bilangan bulat positif , bahwa setiap respons adalah rata-rata dari satuan berat (termasuk kasus bahwa ada pengamatan sama dengan dan data telah dirangkum).
Saya telah membaca ulang paragraf ini beberapa kali, dan itu tidak masuk akal bagi saya. Menggunakan kerangka kerja yang saya kembangkan di atas, misalkan saya memiliki nilai simulasi berikut:
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
Menggunakan kerangka yang saya kembangkan di atas, bagaimana parameter ini diturunkan? Inilah upaya saya untuk melakukan ini dengan tangan: dengan asumsi , kami telah dan melakukan ini dalam memberi (perhatikan bahwa keterbalikan tidak berfungsi dalam kasus ini, jadi saya menggunakan invers umum):
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
Ini tidak cocok dengan nilai dari lm()
output. Apa yang saya lakukan salah?
sumber
weights <- c(50, 85, 75)/2
dalam contoh Anda, Anda mendapatkan hasil yang sama.Untuk menjawab ini dengan lebih ringkas, regresi kuadrat terkecil yang digunakany∈Rn X n×p β∈Rp ϵ∈Rn 0 σ2V σ2>0
weights
dalamR
membuat asumsi berikut: misalkan kita milikiweights = c(w_1, w_2, ..., w_n)
. Biarkan , menjadi matriks desain, menjadi vektor parameter, dan menjadi vektor kesalahan dengan mean dan matriks varian , di mana . Kemudian, Mengikuti langkah-langkah derivasi yang sama dalam posting asli, kami memilikisumber