1 년 후 대학원에서 "가중 최소 제곱"에 대한 나의 이해는 다음과 같습니다. , 는 설계 행렬 \ \ mathbb {R} ^ p는에 boldsymbol \ 베타 \ 파라미터 벡터 될 \ boldsymbol \ 엡실론 \에서 \ mathbb {R} ^ N 될 에러 벡터되도록 \ boldsymbol \ 엡실론 \ SIM \ mathcal {N} (\ mathbf {0}, \ sigma ^ 2 \ mathbf {V}) , 여기서 \ mathbf {V} = \ text {diag} (v_1, v_2, \ dots, v_n) 및 \ sigma ^ 2> 0 입니다. 그런 다음
\ mathbf {y} = \ mathbf {X} \ boldsymbol \ beta + \ boldsymbol \ epsilon 모델y∈Rn n × pXn×pβ∈Rp ϵ ∼ N ( 0 , σ 2 V ) V = diag ( v 1 , v 2 , … , v n ) σ 2 > 0 y = X β + ϵϵ∈Rnϵ∼N(0,σ2V)V=diag(v1,v2,…,vn)σ2>0
y=Xβ+ϵ
가정에서 "가중 최소 제곱"모델이라고합니다. WLS 문제는
\ begin {equation} \ arg \ min _ {\ boldsymbol \ beta} \ left (\ mathbf {y}-\ mathbf {X} \ boldsymbol \ beta \ right) ^ {T} \ mathbf {V} ^ {-1} \ left (\ mathbf {y}-\ mathbf {X} \ boldsymbol \ beta \ right) \ text {.} \ end {equation} \ mathbf {y} = \ begin {bmatrixargminβ(y−Xβ)TV−1(y−Xβ).
라고 가정
y=[y1…yn]T ,
β=[β1…βp]T 및
X=⎡⎣⎢⎢⎢⎢⎢x11x21⋮xn1⋯⋯⋮⋯x1px2p⋮xnp⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢xT1xT2⋮xTn⎤⎦⎥⎥⎥⎥⎥.
xTiβ∈R1 이므로
y−Xβ=⎡⎣⎢⎢⎢⎢⎢y1−xT1βy2−xT2β⋮yn−xTnβ⎤⎦⎥⎥⎥⎥⎥.
이 제공
(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}
따라서
argminβ(y−Xβ)TV−1(y−Xβ)=argminβ∑i=1nv−1i(yi−xTiβ)2.
β 는
β^=(XTV−1X)−1XTV−1y.
이것은 내가 알고있는 지식의 범위입니다.
v1,v2,…,vn 을 어떻게 선택
해야하는지 배웠습니다.
여기서 판단 하면 보통
Var(ϵ)=diag(σ21,σ22,…,σ2n)직관적 인 의미가 있습니다. (WLS 문제에서 가변 무게가 적은 가중치를 부여하고 변동성이 적은 관측치에 가중치를 더 둡니다.)
내가 특히 궁금한 점은 가중치가 정수로 할당 될 때 함수 R
에서 가중치를 처리 하는 방법 lm()
입니다. 사용하여 ?lm
:
NULL
가중치가 아닌 다른 관측 값이 다른 분산을 가짐을 나타내는 데 사용될 수 있습니다 (가중치의 값이 분산에 반비례 함). 또는 동등하게, 가중치의 요소가 양의 정수 인 경우 , 각 응답 는 단위 가중치 관측치 의 평균입니다 (
관측치가 와 같고 데이터가 요약 된 경우 포함).wiyiwiwiyi
이 단락을 여러 번 다시 읽었으며 이해가되지 않습니다. 위에서 개발 한 프레임 워크를 사용하여 다음과 같은 시뮬레이션 된 값이 있다고 가정합니다.
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
위에서 개발 한 프레임 워크를 사용하여 이러한 매개 변수는 어떻게 파생됩니까? 다음은 손으로이 일에 내 시도이다 : 가정 , 우리는이
하고 이것을 제공합니다 (이 경우에는 반전 성이 작동하지 않으므로 일반화 된 역수를 사용했습니다).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
이들은 lm()
출력 값과 일치하지 않습니다 . 내가 무엇을 잘못하고 있지?