A teoria por trás do argumento de pesos em R ao usar lm ()


12

Depois de um ano na pós-graduação, meu entendimento de "mínimos quadrados ponderados" é o seguinte: seja , seja algumas \ n p vezes matriz de design \ boldsymbol \ beta \ in \ mathbb {R} ^ p seja um vetor de parâmetro, \ boldsymbol \ epsilon \ in \ mathbb {R} ^ n seja um vetor de erro tal que \ boldsymbol \ epsilon \ sim \ mathcal {N} (\ mathbf {0}, \ sigma ^ 2 \ mathbf {V}) , onde \ mathbf {V} = \ text {diag} (v_1, v_2, \ pontos, v_n) e \ sigma ^ 2> 0 . Em seguida, o modelo \ mathbf {y} = \ mathbf {X} \ boldsymbol \ beta + \ boldsymbol \ epsilony∈RnXn×pβ∈Rpϵ∈Rnϵ∼N(0,σ2V)V=diag(v1,v2,…,vn)σ2>0

y=Xβ+ϵ
sob as premissas é chamado de modelo "mínimos quadrados ponderados". O problema do WLS acaba sendo encontrar
arg⁡minβ(y−Xβ)TV−1(y−Xβ).
Suponha que y=[y1…yn]T , β=[β1…βp]T e
X=[x11⋯x1px21⋯x2p⋮⋮⋮xn1⋯xnp]=[x1Tx2T⋮xnT].
xiTβ∈R1 , então
y−Xβ=[y1−x1Tβy2−x2Tβ⋮yn−xnTβ].
Isso fornece
(y−Xβ)TV−1=[y1−x1Tβy2−x2Tβ⋯yn−xnTβ]diag(v1−1,v2−1,…,vn−1)=[v1−1(y1−x1Tβ)v2−1(y2−x2Tβ)⋯vn−1(yn−xnTβ)]
v_n ^ {- 1} (y_n- \ mathbf {x} _ {n} ^ {T} \ boldsymbol \ beta) \ final {bmatrix} \ final {align} dando assim
arg⁡minβ(y−Xβ)TV−1(y−Xβ)=arg⁡minβ∑i=1nvi−1(yi−xiTβ)2.
β é estimado usando
β^=(XTV−1X)−1XTV−1y.
Essa é a extensão do conhecimento que estou familiarizado. Nunca fui ensinado como v1,v2,…,vn devem ser escolhidos, embora pareça que, a julgar por aqui , isso geralmente Var(ϵ)=diag(σ12,σ22,…,σn2), o que faz sentido intuitivo. (Dê pesos altamente variáveis ​​menos peso ao problema WLS e dê observações com menos variabilidade e mais peso.)

O que me interessa particularmente é como Rlida com pesos na lm()função quando pesos são designados como números inteiros. De usar ?lm:

Não NULLpesos podem ser usados ​​para indicar que observações diferentes têm variações diferentes (com os valores em pesos sendo inversamente proporcionais às variações); ou equivalentemente, quando os elementos dos pesos são inteiros positivos , que cada resposta é a média de observações de peso unitário (incluindo o caso em que existem observações iguais a e os dados foram resumidos).wiyiwiwiyi

Reli este parágrafo várias vezes e não faz sentido para mim. Usando a estrutura que desenvolvi acima, suponha que possua os seguintes valores simulados:

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  

Usando a estrutura que desenvolvi acima, como esses parâmetros são derivados? Aqui está minha tentativa de fazer isso manualmente: assumindo que , temos e fazendo isso no give (observe que a invertibilidade não funciona neste caso, então eu usei uma inversa generalizada):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

Estes não correspondem aos valores da lm()saída. O que estou fazendo de errado?

Respostas:


4

A matriz deve ser não Além disso, você deve ser , não .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

Obrigado por limpar a matriz de design incorreta, especialmente! Estou bastante enferrujado com esse material. Então, como uma última pergunta, isso significa que nas suposições do WLS? Var(ϵ)=diag(1/weights)
— Clarinetist

Sim, embora os pesos tenham apenas que ser proporcionais a 1 / variância, não necessariamente iguais. Por exemplo, se você usar weights <- c(50, 85, 75)/2no seu exemplo, obtém o mesmo resultado.
— mark999

3

Para responder de maneira mais concisa, a regressão ponderada de mínimos quadrados usando weightsin Rfaz as seguintes suposições: suponha que sim weights = c(w_1, w_2, ..., w_n). Seja , seja uma matriz de design , seja um vetor de parâmetro e seja um vetor de erro com média e matriz de variação , onde . Então, Seguindo os mesmos passos da derivação na postagem original, temos y∈RnXn×pβ∈Rpϵ∈Rn0σ2Vσ2>0

V=diag(1/w1,1/w2,…,1/wn).
arg⁡minβ(y−Xβ)TV−1(y−Xβ)=arg⁡minβ∑i=1n(1/wi)−1(yi−xiTβ)2=arg⁡minβ∑i=1nwi(yi−xiTβ)2
e são estimados usando do GLS suposições .β
β^=(XTV−1X)−1XTV−1y
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.