Có cách nào để sử dụng ma trận hiệp phương sai để tìm hệ số cho hồi quy bội không?


23

Đối với hồi quy tuyến tính đơn giản, hệ số hồi quy có thể tính trực tiếp từ ma trận phương sai hiệp phương sai , bởi trong đó là chỉ số của biến phụ thuộc và là chỉ số của biến giải thích.C de

Cd,eCe,e
de

Nếu người ta chỉ có ma trận hiệp phương sai, có thể tính các hệ số cho một mô hình có nhiều biến giải thích không?

ETA: Đối với hai biến giải thích, có vẻ như và tương tự cho . Tôi không thấy ngay cách mở rộng này thành ba hoặc nhiều biến. β2

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

3
Vectơ hệ số β^ là giải pháp cho XY=(XX)1β . Một số thao tác đại số cho thấy rằng trên thực tế đây giống như công thức bạn đưa ra trong trường hợp 2 hệ số. Được trả tiền độc đáo ở đây: stat.purdue.edu/~jennings/stat514/stat512notes/topic3.pdf . Không chắc chắn nếu điều đó giúp tất cả. Nhưng tôi muốn mạo hiểm đoán rằng điều này là không thể nói chung dựa trên công thức đó.
Shadowtalker

1
@David Bạn có tìm ra cách mở rộng số này thành một số biến giải thích tùy ý (ngoài 2) không? Tôi cần biểu hiện.
Jane Wayne

1
@JaneWayne Tôi không chắc là tôi hiểu câu hỏi của bạn: whuber đã đưa ra giải pháp bên dưới dưới dạng ma trận, C1(Cov(Xi,y))
David

1
yup tôi đã nghiên cứu nó và anh ấy đúng.
Jane Wayne

Câu trả lời:


36

Có, ma trận hiệp phương sai của tất cả các biến - giải thích và phản hồi - chứa thông tin cần thiết để tìm tất cả các hệ số, với điều kiện là một thuật ngữ chặn (không đổi) được đưa vào mô hình. (Mặc dù hiệp phương sai không cung cấp thông tin về thuật ngữ không đổi, nhưng nó có thể được tìm thấy từ các phương tiện của dữ liệu.)


Phân tích

Hãy để các dữ liệu cho các biến giải thích được sắp xếp như vectơ cột chiều và biến phản ứng là vector cột , được coi là một thực hiện của một biến ngẫu nhiên . Các ước lượng bình phương nhỏ nhất bình thường của các hệ số trong mô hìnhx 1 , x 2 , ... , x p y Y βnx1,x2,,xpyYβ^

E(Y)=α+Xβ

thu được bằng cách tập hợp các vectơ cột thành một mảng và giải hệ phương trình tuyến tínhX 0 = ( 1 , 1 , Hoài , 1 ) , X 1 , Rắc , X p n × p + 1 Xp+1X0=(1,1,,1),X1,,Xpn×p+1X

XXβ^=Xy.

Nó tương đương với hệ thống

1nXXβ^=1nXy.

Loại bỏ Gaussian sẽ giải quyết hệ thống này. Nó tiến hành bằng cách nối ma trận và -vector vào mảng và giảm hàng. 1p+1×p+1p+111nXXp+1p+1×p+2A1nXyp+1×p+2A

Bước đầu tiên sẽ kiểm tra . Nhận thấy điều này là khác không, nó tiến hành trừ các bội số thích hợp của hàng đầu tiên của khỏi các hàng còn lại để loại bỏ các mục còn lại trong cột đầu tiên. Các bội số này sẽ là và số bị trừ khỏi mục sẽ bằng . Đây chỉ là công thức cho hiệp phương sai của và . Hơn nữa, số còn lại ở vị trí bằngA11n(XX)11=1nX0X0=1AAi+1,j+1=Xi Xj ¯ X i ¯ X jXiXji+1,p+211nX0Xi=X¯iMộttôi+1,j+1= =Xtôi'XjX¯tôiX¯jXtôiXjtôi+1,p+2 Xiy1nXtôi'y-Xtôi¯y¯, hiệp phương sai của với .Xtôiy

Do đó, sau bước đầu tiên loại bỏ Gaussian, hệ thống được rút gọn để giải quyết

Cβ^= =(Cov(Xtôi,y))'

và rõ ràng - vì tất cả các hệ số là hiệp phương sai - giải pháp đó có thể được tìm thấy từ ma trận hiệp phương sai của tất cả các biến.

(Khi không thể đảo ngược, giải pháp có thể được viết . Các công thức được đưa ra trong câu hỏi là những trường hợp đặc biệt này khi và Viết ra các công thức như vậy một cách rõ ràng sẽ ngày càng trở nên phức tạp hơn khi phát triển. Hơn nữa, chúng kém hơn về tính toán số, được thực hiện tốt nhất bằng cách giải hệ phương trình thay vì đảo ngược ma trận )C - 1 ( Cov ( X i , y ) ) p = 1 p = 2 p CCC-1(Cov(Xtôi,y))'p= =1p= =2pC

Thuật ngữ không đổi sẽ là sự khác biệt giữa giá trị trung bình của và giá trị trung bình được dự đoán từ các ước tính, .X βyXβ^


Thí dụ

Để minh họa, Rđoạn mã sau tạo ra một số dữ liệu, tính toán hiệp phương sai của chúng và thu được ước tính hệ số bình phương nhỏ nhất chỉ từ thông tin đó. Nó so sánh chúng với các ước tính thu được từ công cụ ước lượng bình phương nhỏ nhất 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  

Đầu ra cho thấy sự thỏa thuận giữa hai phương pháp:

(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
Cảm ơn, @whuber! Đây chính xác là những gì tôi đang tìm kiếm, và bộ não bị suy nhược của tôi không thể có được. Bên cạnh đó, động lực cho câu hỏi là vì nhiều lý do, về cơ bản chúng tôi không có sẵn đầy đủ , nhưng có từ các tính toán trước đó. Xcov(z)
David

7
Các câu trả lời như thế này nâng thanh của Xác thực chéo này
jpmuc

@whuber Trong ví dụ của bạn, bạn đã tính toán chặn yxbeta.hat. Các yxlà một phần của dữ liệu gốc. Có thể rút ra được đánh chặn từ ma trận hiệp phương sai và có nghĩa là một mình? Bạn có thể vui lòng cung cấp các ký hiệu?
Jane Wayne

@Jane Chỉ cung cấp phương tiện , áp dụng cho họ: Tôi đã thay đổi mã để phản ánh điều này. β ¯ X β = ¯ X β .X¯β^
X¯β^=Xβ^¯.
whuber

+1 rất hữu ích cho mã
Michael
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.