Teori di balik argumen bobot dalam R saat menggunakan lm ()

12

Setelah satu tahun di sekolah pascasarjana, pemahaman saya tentang "kuadrat terkecil tertimbang" adalah sebagai berikut: biarkan yRn , X menjadi beberapa matriks desain n×p , 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βRpϵRnϵN(0,σ2V)V=diag(v1,v2,,vn)σ2>0

y=Xβ+ϵ
di bawah asumsi disebut model "kuadrat terkecil". Masalah WLS pada akhirnya adalah menemukan Misalkan \ mathbf {y} = \ begin {bmatrix } y_1 & \ dots & y_n \ end {bmatrix} ^ {T} , \ boldsymbol \ beta = \ begin {bmatrix} \ beta_1 & \ dots & \ beta_p \ end {bmatrix} ^ {T} , dan \ mathbf {X } = \ begin {bmatrix} x_ {11} & \ cdots & x_ {1p} \\ x_ {21} & \ cdots & x_ {2p} \\ \ vdots & \ vdots & \ vdots \\ x_ {n1} & & \ cdots & x_ {np} \ end {bmatrix} = \ begin {bmatrix} \ mathbf {x} _ {1} ^ {T} \\ \ mathbf {x} _ {2} ^ {T} \\ \ vdots \\ \ mathbf {x} _ {n} ^ {T} \ end {bmatrix} \ text {.
argminβ(yXβ)TV1(yXβ).
y=[y1yn]Tβ=[β1βp]T
X=[x11x1px21x2pxn1xnp]=[x1Tx2TxnT].
xiTβR1 , jadi
yXβ=[y1x1Tβy2x2TβynxnTβ].
Ini memberi
(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} sehingga memberikan
argminβ(yXβ)TV1(yXβ)=argminβi=1nvi1(yixiTβ)2.
β diperkirakan menggunakan
β^=(XTV1X)1XTV1y.
Ini adalah tingkat pengetahuan yang saya kenal. Saya tidak pernah diajari bagaimana v1,v2,,vn harus dipilih, walaupun tampaknya, dilihat dari sini , biasanya Var(ϵ)=diag(σ12,σ22,,σn2), yang masuk akal secara intuitif. (Berikan bobot yang sangat bervariasi, lebih sedikit bobot dalam masalah WLS, dan berikan pengamatan dengan variabilitas yang lebih sedikit, lebih berat.)

Apa yang saya sangat ingin tahu tentang bagaimana Rmenangani bobot dalam lm()fungsi ketika bobot ditugaskan menjadi bilangan bulat. Dari menggunakan ?lm:

Non- NULLbobot 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).wiyiwiwiyi

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):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

Ini tidak cocok dengan nilai dari lm()output. Apa yang saya lakukan salah?

Klarinetis
sumber

Jawaban:

4

Matriks harus bukan Anda juga harus , bukan .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
sumber
Terima kasih telah membereskan matriks desain yang salah, terutama! Saya cukup berkarat pada materi ini. Jadi, sebagai satu pertanyaan terakhir, apakah ini berarti bahwa dalam asumsi WLS? Var(ϵ)=diag(1/weights)
Klarinetis
Ya, meskipun bobot hanya harus proporsional dengan 1 / varians, belum tentu sama. Misalnya, jika Anda menggunakan weights <- c(50, 85, 75)/2dalam contoh Anda, Anda mendapatkan hasil yang sama.
mark999
3

Untuk menjawab ini dengan lebih ringkas, regresi kuadrat terkecil yang digunakan weightsdalam Rmembuat asumsi berikut: misalkan kita miliki weights = 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 memiliki 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
dan diperkirakan menggunakan dari GLS asumsi .β
β^=(XTV1X)1XTV1y
Klarinetis
sumber