간단한 선형 회귀 분석의 경우 회귀 계수는 분산 공분산 행렬 에서 의해 직접 계산할 수 있습니다. 여기서 는 종속 변수의 인덱스이고 는 설명 변수의 인덱스입니다.
공분산 행렬 만있는 경우 여러 설명 변수가있는 모형의 계수를 계산할 수 있습니까?
ETA : 두 개의 설명 변수의 경우 및 와 유사합니다 . 이것을 세 개 이상의 변수로 확장하는 방법을 즉시 보지 못했습니다.
간단한 선형 회귀 분석의 경우 회귀 계수는 분산 공분산 행렬 에서 의해 직접 계산할 수 있습니다. 여기서 는 종속 변수의 인덱스이고 는 설명 변수의 인덱스입니다.
공분산 행렬 만있는 경우 여러 설명 변수가있는 모형의 계수를 계산할 수 있습니까?
ETA : 두 개의 설명 변수의 경우 및 와 유사합니다 . 이것을 세 개 이상의 변수로 확장하는 방법을 즉시 보지 못했습니다.
답변:
그렇습니다. 모든 변수 (설명 및 반응 ) 의 공분산 행렬 에는 절편 (일정) 항이 모형에 포함 된 경우 모든 계수를 찾는 데 필요한 정보가 포함됩니다. 공분산은 상수 항에 대한 정보를 제공하지 않지만 데이터 수단에서 찾을 수 있습니다.
설명 변수에 대한 데이터를 차원 열 벡터 하고 응답 변수를 열 변수 로 간주합니다 . 이는 임의 변수 의 실현으로 간주됩니다 . 보통 최소 제곱 은 모형의 계수에 대한 를 추정 합니다., X 1 , X 2 , ... , X의 P의 Y Y의 β
조립함으로써 얻어진다 열 벡터 에 어레이 선형 연립 방정식을 해결X 0 = ( 1 , 1 , … , 1 ) ' , X 1 , … , X p n × p + 1 X
시스템과 동등
가우스 제거 는이 시스템을 해결합니다. 이는 인접하여 진행 행렬 상기 - 벡터 (A) 내로 배열 및 행 축소. 1p+11p+1×p+2A
첫 번째 단계는 합니다. 이것을 0이 아닌 것으로 발견하면 , 나머지 행에서 의 첫 번째 행의 적절한 배수를 빼서 첫 번째 열의 나머지 항목을 제로화합니다. 이 배수는 이며 항목 에서 빼는 수 는 합니다. 이것은 와 의 공분산 공식입니다 . 또한 위치에 남은 숫자는A1I+1,J+1=X ' 나는 XJ ¯ X I ¯ X JX나XJI+1,P+21 Xiy,의 공분산 와 .
따라서 가우시안 제거의 첫 번째 단계 후에 시스템이 해결으로 감소합니다.
모든 계수가 공분산이기 때문에 모든 변수의 공분산 행렬에서 해를 찾을 수 있습니다.
( 가 뒤집을 수 없을 때 솔루션은 이라고 쓸 수 있습니다 . 및 . 이러한 식 작성 아웃 명백하게 더 복잡해질 것이다 증가한다. 또한, 그들은 가장 방정식 아닌 행렬 반전시킴으로써 해결 시스템에 의해 수행되는 수치 계산에 대한 열등한 ).C - 1 ( Cov ( X i , y ) ) ′ p = 1 p = 2 p C
상수 항은 의 평균과 추정치 에서 예측 한 평균 값 의 차이 입니다.X의 β
설명하기 위해 다음 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
결과는 두 방법 사이의 일치를 보여줍니다.
(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
cov(z)
y
and x
및 에서 가로 채기를 계산했습니다 beta.hat
. y
및 x
원래 데이터의 일부이다. 공분산 행렬에서 절편을 도출 할 수 있습니까? 표기법을 제공해 주시겠습니까?