Setelah satu tahun di sekolah pascasarjana, pemahaman saya tentang "kuadrat terkecil tertimbang" adalah sebagai berikut: biarkan y∈Rn , 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β(y−Xβ)TV−1(y−Xβ).
y=[y1…yn]Tβ=[β1…βp]TX=⎡⎣⎢⎢⎢⎢⎢x11x21⋮xn1⋯⋯⋮⋯x1px2p⋮xnp⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢xT1xT2⋮xTn⎤⎦⎥⎥⎥⎥⎥.
xTiβ∈R1 , jadi
y−Xβ=⎡⎣⎢⎢⎢⎢⎢y1−xT1βy2−xT2β⋮yn−xTnβ⎤⎦⎥⎥⎥⎥⎥.
Ini memberi
(y−Xβ)TV−1=[y1−xT1βy2−xT2β⋯yn−xTnβ]diag(v−11,v−12,…,v−1n)=[v−11(y1−xT1β)v−12(y2−xT2β)⋯v−1n(yn−xTnβ)]
v_n ^ {- 1} (y_n- \ mathbf {x} _ {n} ^ {T} \ boldsymbol \ beta) \ end {bmatrix} \ end {align}
sehingga memberikan
argminβ(y−Xβ)TV−1(y−Xβ)=argminβ∑i=1nv−1i(yi−xTiβ)2.
β diperkirakan menggunakan
β^=(XTV−1X)−1XTV−1y.
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(σ21,σ22,…,σ2n), 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 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).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?