Çoklu regresyon için katsayıları bulmak için kovaryans matrisini kullanmanın bir yolu var mı?


23

Basit doğrusal regresyon için, regresyon katsayısı doğrudan varyansı-kovaryans matrisinden C, hesaplanır ; burada , bağımlı değişkenin indeksidir ve , açıklayıcı değişkenin indeksidir.

Cd,eCe,e
de

Eğer biri sadece kovaryans matrisine sahipse, çoklu açıklayıcı değişkenleri olan bir model için katsayıları hesaplamak mümkün müdür?

ETA: İki açıklayıcı değişken için, ve benzer şekilde . Bunu üç veya daha fazla değişkene nasıl genişleteceğimi hemen göremiyorum.

β1=Cov(y,x1)var(x2)Cov(y,x2)Cov(x1,x2)var(x1)var(x2)Cov(x1,x2)2
β2

3
katsayısı , için çözümdür . Bazı cebirsel manipülasyon, bunun aslında 2 katsayılı durumda verdiğiniz formülle aynı olduğunu ortaya koymaktadır. Burada güzel bir şekilde ortaya kondu : stat.purdue.edu/~jennings/stat514/stat512notes/topic3.pdf . Bunun faydası olup olmadığından emin değilim. Ancak bunun genel olarak bu formüle dayanarak imkansız olduğunu tahmin etmeye teşebbüs ediyorum. β^XY=(XX)1β
shadowtalker

1
@David Bunu, keyfi bir açıklayıcı değişken sayısına (2'nin ötesinde) genişletmeyi düşündünüz mü? İfadeye ihtiyacım var.
Jane Wayne,

1
@JaneWayne Sorunuzu anladığımdan emin değilim: whuber aşağıdaki çözümü matris formunda verdi,C1(Cov(Xi,y))
David

1
yup çalıştım ve o haklı.
Jane Wayne,

Yanıtlar:


36

Evet, tüm değişkenlerin kovaryans matrisi - açıklayıcı ve yanıt - modele bir müdahale (sabit) terimi dahil edilmesi koşuluyla, tüm katsayıları bulmak için gerekli bilgileri içerir. (Kovaryanslar sabit terim hakkında bilgi vermemesine rağmen, veri araçlarından bulunabilir.)


analiz

Açıklayıcı değişkenler için verinin, -boyutlu sütun vektörleri ve değişkeni , rastgele bir değişkeni olduğunun düşünüldüğü sütun vektörü olarak düzenlensin . Sıradan en küçük kareler modeldeki katsayıların değerini tahmin edernx1,x2,,xpyYβ^

E(Y)=α+Xβ

birleştirilmesiyle elde edilir sütun vektörlerinin bir içine dizisi ve doğrusal denklem sisteminin çözülmesip+1X0=(1,1,,1),X1,,Xpn×p+1X

XXβ^=Xy.

Sisteme eşdeğerdir

1nXXβ^=1nXy.

Gauss ortadan kaldırılması bu sistemi çözecektir. Bu bitişik ile çalışır matrisi ve -vector bir içine dizi ve satır azalması. p+1×p+11nXXp+11nXyp+1×p+2A

İlk adım . Bunun sıfır olmadığını tespit ederek , ilk sütunundaki kalan girişleri sıfırlamak için ilk satırının uygun katlarını kalan satırlardan çıkarmaya devam eder. Bu katları olacak ve giriş çıkartılmaktadır sayısı eşit olur . Bu sadece ve kovaryansı için bir formül . Dahası, konumunda bırakılan sayı , değerine eşittir.1n(XX)11=1nX0X0=1A1nX0Xi=X¯iAi+1,j+1=XiXjX¯iX¯jXiXji+1,p+21nXiyXi¯y¯, ile kovaryansı .Xiy

Böylece, Gauss elemesinin ilk basamağından sonra sistem çözülmeye indirgenmiştir.

Cβ^=(Cov(Xi,y))

ve açıkçası - tüm katsayılar kovaryans olduklarından - bu çözüm tüm değişkenlerin kovaryans matrisinden bulunabilir.

( tersinirse çözüm verilen formüller ve olduğunda bunun özel durumlarıdır. tür formüllerin açıkça yazılması, büyüdükçe gittikçe daha karmaşık hale gelecektir.Ayrıca , en azından matrisini tersine çevirmek yerine denklemler sistemi çözülerek yapılan sayısal hesaplamada yetersiz kalmaktadırlar .)CC1(Cov(Xi,y))p=1p=2pC

Sabit terim, ortalaması ile tahminlerden tahmin edilen ortalama değerler arasındaki fark olacaktır , .yXβ^


Örnek

Açıklamak gerekirse, aşağıdaki Rkod bazı veriler oluşturur, kovaryanslarını hesaplar ve en küçük kareler katsayısı tahminlerini yalnızca bu bilgilerden elde eder. Onları en küçük kareler tahmin edicisinden elde edilen tahminlerle karşılaştırır lm.

#
# 1. Generate some data.
#
n <- 10        # Data set size
p <- 2         # Number of regressors
set.seed(17)
z <- matrix(rnorm(n*(p+1)), nrow=n, dimnames=list(NULL, paste0("x", 1:(p+1))))
y <- z[, p+1]
x <- z[, -(p+1), drop=FALSE]; 
#
# 2. Find the OLS coefficients from the covariances only.
#
a <- cov(x)
b <- cov(x,y)
beta.hat <- solve(a, b)[, 1]  # Coefficients from the covariance matrix
#
# 2a. Find the intercept from the means and coefficients.
#
y.bar <- mean(y)
x.bar <- colMeans(x)
intercept <- y.bar - x.bar %*% beta.hat  

Çıktı, iki yöntem arasındaki anlaşmayı gösterir:

(rbind(`From covariances` = c(`(Intercept)`=intercept, beta.hat),
       `From data via OLS` = coef(lm(y ~ x))))
                  (Intercept)        x1        x2
From covariances     0.946155 -0.424551 -1.006675
From data via OLS    0.946155 -0.424551 -1.006675

1
Teşekkürler, @whuber! Bu tam olarak aradığım şeydi ve atrofiye beynim bulamadı. Bunun yanı sıra, soru için motivasyon, çeşitli nedenlerden dolayı, esasen tam bulunmadığı ancak önceki hesaplamalardan elde edilmiş olduğumuzdur . Xcov(z)
David,

7
Bu gibi cevaplar bu Haç Validated çubuğunu yükseltmek
jpmuc

@ whuber Örneğinizde, kesmeyi yve xve öğelerini hesapladınız beta.hat. yVe xorijinal verilerin bir parçasıdır. Kesinti kovaryans matrisinden türetmek ve tek başına kullanmak mümkün müdür? Lütfen notu verebilir misiniz?
Jane Wayne,

@Jane Yalnızca anlamına gelir , bunlara uygulayın: Bunu yansıtacak şekilde kodu değiştirdim. X¯β^
X¯β^=Xβ^¯.
whuber

kod için çok yararlı +1
Michael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.