본문 바로가기
1️⃣ AI•DS/⚾ 계량경제•통계

계량경제학 강의_한치록_가정의 현실화 13장

by isdawell 2023. 5. 22.
728x90

 

 

👀 계량경제학 개인 공부용 포스트 글입니다. 

 

 

 

 

 

 

13. 이분산 


 

①  오차의 이분산 

 

•  표본추출 반복시행 시 u1,u2,...,un 의 분산이 서로 간에 달라서 동일분산 가정이 위배될 때 오차가 이분산적이라고 한다 : var(u | X1,...,Xk) 가 X1,..,Xk 에 의존함 

•  ex. 교육수준이 높은 사람의 임금 분산은 교육수준이 낮은 사람들의 임금 분산보다 클 것이다. 

•  다른 가정들이 모두 만족되고 오차항이 이분산적이라면 최소제곱 추정량은 여전히 unbiased 이다. 그러나 t검정과 F검정이 타당하지 않게 된다. 표본의 크기가 아무리 커도 이 문제는 해결되지 않는다. 또한 오차항이 이분산적이면 OLS 추정량이 BLUE 가 아니게 되며 OLS 추정량보다 더 효율적인 선형 비편향 추정량이 존재할 수 있다. 

 

 

 

②  이분산에 견고한 분산추정 방법 

 

•  σi^2 을 i 번째 잔차의 제곱 ui^2 으로 대체하여 분산을 추정하면, 이분산에 견고한 분산추정량 (=HC)을 얻는다. 

•  R코드 : 이분산에 견고한 분산추정량의 표준오차들을 이용한 결과들을 보고하려면 coeftest() 명령어를 사용하는 것이 좋다. 

 

# 방법1
ols <- lm(y~x1+x2)
library(sandwich)
vcovHC(ols, type="HC0") 

# 방법2
library(car) 
hccm(ols, type="hc0")

# 방법3 
library(lmtest)
coeftest(ols, vcov = vcovHCs, type = "HC0")

 

•  교정 방법들에는 HC1, HC2, HC3, HC4 등이 있다. HC 분산추정의 변종들이라 생각하면 된다. HC0 < HC1 < .. < HC4 순으로 분산추정량의 크기를 가진다. HC4 처럼 큰 표준오차를 사용한다면 검정의 크기가 작아지면서 검정력도 작아진다. HC0 처럼 너무 작은 표준오차를 사용한다면 검정력이 커지는 반면 검정의 크기도 커진다. 검정의 크기는 유의수준과 동일한 것이 가장 좋다. 

 

 

 

③  이분산 하에서 OLS 를 이용한 가설검정 

 

•  이분산 하에서 OLS 를 이용해 가설검정을 하려면 통상적인 표준오차 대신에 HC3 처럼 이분산에 견고한 표준오차를 사용해 t값을 구하면 된다. 이때 표본의 크기가 어느정도 커야 한다. 

 

# 통상적인 (이분산에 견고하지 않은) 검정

ols<-lm(model, data = A) 
library(lmtest)
coeftest(ols)


# HC3 표준오차 이용
coeftest(ols, vcov = vcovHC)

 

•  HC3 를 이용한 표준오차는 통상적인 검정의 결과보다 전체적으로 더 크다. 

 

•  F검정도 waldtest 에서 vcov=vcovHC 옵션을 사용해 쉽게 비교를 해볼 수 있다. 

 

waldtest(ols, vcov = vcovHC)

 

•  오차항이 이분산적이면 OLS 는 여전히 비편향이나 통상적인 분산추정량이 잘못되었고 따라서 통상적인 t검정이나 F검정의 크기가 유의수준과 다르게 된다. 따라서 이 문제를 해결하기 위해 HC0, HC1, .., HC4 등 이분산에 견고한 방법을 사용해 분산추정값 (및 표준오차) 를 구한다. 이 방법이 제대로 동작하려면 표본 크기가 커야 한다. 

 

 

 

 

④  이분산 하에서 BLUE 구하기 : 가중최소제곱법 

 

•  동분산의 가정이 위배되면 가우스 마코프 정리에 필요한 가정이 성립하지 않게 되며, OLS 추정량이 더 이상 BLUE 가 아니고 OLS 보다 더 효율적인 선형 비편향 추정량이 존재할 수 있다. 

 

•  원래의 변수들을 조작하여 오차항이 가우스마코프 조건을 충족시키도록 변환한 후 OLS 를 하는 절차를 일반화된 최소제곱법 GLS 라고 한다. GLS 추정량은 BLUE 이다. (ex. σi^2 = σ•hi) 

•  오차항에 이분산이 있을 때 GLS 추정은 가중최소제곱법(WLS) 의 일종이다. R 로 WLS 를 수행하려면 lm 에 weights 옵션을 주면 된다. 가령 var(ui) = σ^2•|xi1| 이라고 하면 hi = |xi1| 이고, 가중치는 1/|xi1| 가 된다. 이때 R 코드로는 lm(y~x1+x2, weights = 1/abs(x1)) 이 된다. 

 

•  오차항의 분산이 크면, 관측치의 종속변수 값은 독립변수값이 예측해주는 값과 큰 차이가 날 수 있다. 

•  OLS 는 모든 관측치들에 동일한 가중치를 부여한다. 오차항의 분산이 커서 독립변수와 종속변수의 관계가 크게 교란된 (나쁜) 관측치나, 오차항의 분산이 작아서 관계가 별로 교란되지 않은 (좋은) 관측치나 모두 동일한 가중치를 부여받는다. 반면, WLS 에서는 오차 분산이 작은 좋은 관측치에 큰 비중을 주고, 오차 분산이 큰 나쁜 관측치에 작은 비중을 준다. 따라서 추정량의 효율성이 높아진다. 

 

•  그러나 WLS 는 추정량이 가중치에 의존하게 된다. 오차항 분산의 구조가 정확히 알려져 있지 않는 한, 가중치는 연구자의 선택에 의해 좌우된다. 

 

 

 

⑤  분산의 구조를 모를 때 GLS 하기 : FGLS

 

•  σi^2 = σ•hi 일때 hi 를 모르면 어떻게 할까. 그렇다면 GLS 를 할 수 없다. 대신 hi 가 어떤 변수에 의해 어떠한 식으로 결정되는지 가정을 하고 나서 근사적인 GLS 를 할 수 있다. 이것을 실현가능한 GLS, FGLS 라고 한다. 

 

⑴ 분산이 설명변수들에 의해 결정되는 모형을 세운 후 

⑵ 자료로부터 모형의 모수들을 추정해 모형의 fitted value 를 구하고 

⑶ fitted value 를 적절히 변형하여 hi 를 추정하고 

⑷ 추정된 hi 로 WLS 를 한다. 

 

model <- deathrate ~ drink + smoke + aged + vehipc + factor(year) 
ols <- lm(model, data = Death) 
Death$u <- ols$resid 
aux <- lm(update(model, I(log(u^2))~.), data = Death) 
Death$g <- aux$fitted 
Death$h <- exp(Death$g)
fgls <- lm(model, data = Death, weight = 1/h) 
library(lmtest)
coeftest(fgls)

 

 

•  update(model, I(log(u^2))~.) 는 첫번째 행에 정의된 모델의 좌변을 log(ui^2) 로 치환하고 우변은 그대로 사용하라는 뜻이다. 

 

 

 

⑥  이분산이 존재하는지 검정 

 

•  σi^2 오차항을 관측할 수 있다면, 이분산을 검정하는 방법은 오차의 제곱을 설명변수나 설명변수들을 변형한 값들로 회귀하는 것이다. 그러나 실제로 오차항을 관측할 수가 없기 때문에 OLS 잔차를 대신 사용한다. 

•  가령, Y = β0 + β1•X1 + β2•X2 + u 에서 오차항의 분산이 X1 과 상관있는지 검정하려면 ui^2 을 X1 에 대해 회귀한 후 X1의 계수가 유의한지 검정하는 방법이 있다. 가령 ui^2 = δ0 + δ1•xi1 + 오차i 를 추정하여 H0 : δ1=0 을 검정한다. 

•  만일 오차항의 이분산이 어느 변수에 의해 야기되는지 모르거나 복수의 변수에 의해 야기된다면, 의심가는 모든 변수와 그 제곱항들 그리고 교차항들을 다 포함시켜 보조회귀를 하면 된다. 보조회귀 후, 해당 계수들에 대해 F 검정을 진행해볼 수 있다. 

 

 

 

 

728x90

댓글