lm()を使用する場合のRの重み引数の背後にある理論


11

聞かせて:大学院における年後、 "加重最小二乗"の私の理解は以下の通りである、いくつかのことデザイン行列、\を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 \ epsilonyRnXn×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β(yXβ)TV1(yXβ).
と仮定y=[y1yn]Tβ=[β1βp]T、および
X=[x11x1px21x2pxn1xnp]=[x1Tx2TxnT].
xiTβR1なので、
yXβ=[y1x1Tβy2x2TβynxnTβ].
これにより、
(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} したがって、
argminβ(yXβ)TV1(yXβ)=argminβi=1nvi1(yixiTβ)2.
β
β^=(XTV1X)1XTV1y.
これは私がよく知っている知識の範囲です。私はどのように教えられていませんでしたv1,v2,,vn、それはそのようだがによって判断、選択する必要がありますここではその通常、Var(ϵ)=diag(σ12,σ22,,σn2)、これは直感的に理解できます。(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()出力の値と一致しません。何が悪いのですか?

回答:


3

行列は なくあり また、あなたは、ではなく、である必要があります。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

特に間違ったデザインマトリックスを解消していただき、ありがとうございます。私はこの素材にかなり錆びています。それで、最後の質問として、これはWLSの仮定でであることを意味しますか?Var(ϵ)=diag(1/weights)
クラリネット奏者、

はい。ただし、重みは1 /分散に比例する必要があるだけで、必ずしも等しい必要はありません。たとえば、例で使用weights <- c(50, 85, 75)/2すると、同じ結果が得られます。
mark999 2016年

2

より簡潔にこれに答えるために、weightsin Rを使用した加重最小二乗回帰は、次の仮定を行いますweights = c(w_1, w_2, ..., w_n)。ましょう、であるデザイン行列、パラメータベクトルであり、そしては、平均と分散行列持つ誤差ベクトルであり、ここでです。次に、 元の投稿での導出と同じ手順に従って、 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
とは、 からGLS仮定β
β^=(XTV1X)1XTV1y
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.