聞かせて:大学院における年後、 "加重最小二乗"の私の理解は以下の通りである、いくつかのことデザイン行列、\をboldsymbol \ beta \ in \ mathbb {R} ^ pはパラメータベクトルであり、\ boldsymbol \ epsilon \ in \ mathbb {R} ^ nは、\ boldsymbol \ epsilon \ 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 \ epsilony∈RnXn×pβ∈Rpϵ∈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} \左(\ mathbf {Y} - \ mathbf {X} \ boldsymbol \右ベータ\)\テキスト\端{式} {。}argminβ(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()
出力の値と一致しません。何が悪いのですか?